1.請描述一下 cookies,sessionStorage 和 localStorage 的區(qū)別?
cookie是網(wǎng)站為了標示用戶身份而儲存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過加密)。
cookie數(shù)據(jù)始終在同源的http請求中攜帶(即使不需要),記會在瀏覽器和服務(wù)器間來回傳遞。
sessionStorage和localStorage不會自動把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存。
存儲大?。? cookie數(shù)據(jù)大小不能超過4k。
sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大。
有期時間:
localStorage 存儲持久數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失除非主動刪除數(shù)據(jù);
sessionStorage 數(shù)據(jù)在當前瀏覽器窗口關(guān)閉后自動刪除。
cookie 設(shè)置的cookie過期時間之前一直有效,即使窗口或瀏覽器關(guān)閉
2.請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
一個用于頁面布局的全新CSS3功能,F(xiàn)lexbox可以把列表放在同一個方向(從上到下排列,從左到右),并讓列表能延伸到占用可用的空間。
較為復雜的布局還可以通過嵌套一個伸縮容器(flex container)來實現(xiàn)。
采用Flex布局的元素,稱為Flex容器(flex container),簡稱"容器"。
它的所有子元素自動成為容器成員,稱為Flex項目(flex item),簡稱"項目"。
常規(guī)布局是基于塊和內(nèi)聯(lián)流方向,而Flex布局是基于flex-flow流可以很方便的用來做局中,能對不同屏幕大小自適應(yīng)。
在布局上有了比以前更加靈活的空間。
3.為什么要初始化CSS樣式?
因為瀏覽器的兼容問題,不同瀏覽器對有些標簽的默認值是不同的,如果沒對CSS初始化往往會出現(xiàn)瀏覽器之間的頁面顯示差異。
當然,初始化樣式會對SEO有一定的影響,但魚和熊掌不可兼得,但力求影響最小的情況下初始化。
最簡單的初始化方法: * {padding: 0; margin: 0;} (強烈不建議)
淘寶的樣式初始化代碼:
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }
h1, h2, h3, h4, h5, h6{ font-size:100%; }
address, cite, dfn, em, var { font-style:normal; }
code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
small{ font-size:12px; }
ul, ol { list-style:none; }
a { text-decoration:none; }
a:hover { text-decoration:underline; }
sup { vertical-align:text-top; }
sub{ vertical-align:text-bottom; }
legend { color:#000; }
fieldset, img { border:0; }
button, input, select, textarea { font-size:100%; }
table { border-collapse:collapse; border-spacing:0; }
3.如何實現(xiàn)數(shù)組的隨機排序?
方法一:
var arr = [1,2,3,4,5,6,7,8,9,10];
function randSort1(arr){
for(var i = 0,len = arr.length;i < len; i++ ){
var rand = parseInt(Math.random()*len);
var temp = arr[rand];
arr[rand] = arr[i];
arr[i] = temp;
}
return arr;
}
console.log(randSort1(arr));
方法二:
var arr = [1,2,3,4,5,6,7,8,9,10];
function randSort2(arr){
var mixedArray = [];
while(arr.length > 0){
var randomIndex = parseInt(Math.random()*arr.length);
mixedArray.push(arr[randomIndex]);
arr.splice(randomIndex, 1);
}
return mixedArray;
}
console.log(randSort2(arr));
方法三:
var arr = [1,2,3,4,5,6,7,8,9,10];
arr.sort(function(){
return Math.random() - 0.5;
})
console.log(arr);
4.javascript 代碼中的"use strict";是什么意思 ? 使用它區(qū)別是什么?
use strict是一種ECMAscript 5 添加的(嚴格)運行模式,這種模式使得 Javascript 在更嚴格的條件下運行,
使JS編碼更加規(guī)范化的模式,消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為。
默認支持的糟糕特性都會被禁用,比如不能用with,也不能在意外的情況下給全局變量賦值;
全局變量的顯示聲明,函數(shù)必須聲明在頂層,不允許在非函數(shù)代碼塊內(nèi)聲明函數(shù),arguments.callee也不允許使用;
消除代碼運行的一些不安全之處,保證代碼運行的安全,限制函數(shù)中的arguments修改,嚴格模式下的eval函數(shù)的行為和非嚴格模式的也不相同;
提高編譯器效率,增加運行速度;
為未來新版本的Javascript標準化做鋪墊。
5.http狀態(tài)碼有那些?分別代表是什么意思?
100-199 用于指定客戶端應(yīng)相應(yīng)的某些動作。
200-299 用于表示請求成功。
300-399 用于已經(jīng)移動的文件并且常被包含在定位頭信息中指定新的地址信息。
400-499 用于指出客戶端的錯誤。400 1、語義有誤,當前請求無法被服務(wù)器理解。401 當前請求需要用戶驗證 403 服務(wù)器已經(jīng)理解請求,但是拒絕執(zhí)行它。
500-599 用于支持服務(wù)器錯誤。 503 – 服務(wù)不可用