1.請(qǐng)描述一下 cookies昼汗,sessionStorage 和 localStorage 的區(qū)別毯焕?
cookie是網(wǎng)站為了標(biāo)示用戶身份而儲(chǔ)存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過加密)菠齿。
cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要)剥槐,記會(huì)在瀏覽器和服務(wù)器間來回傳遞损谦。
sessionStorage和localStorage不會(huì)自動(dòng)把數(shù)據(jù)發(fā)給服務(wù)器陆馁,僅在本地保存找颓。
存儲(chǔ)大小:
cookie數(shù)據(jù)大小不能超過4k叮贩。
sessionStorage和localStorage 雖然也有存儲(chǔ)大小的限制击狮,但比cookie大得多,可以達(dá)到5M或更大益老。
有期時(shí)間:
localStorage 存儲(chǔ)持久數(shù)據(jù)彪蓬,瀏覽器關(guān)閉后數(shù)據(jù)不丟失除非主動(dòng)刪除數(shù)據(jù);
sessionStorage 數(shù)據(jù)在當(dāng)前瀏覽器窗口關(guān)閉后自動(dòng)刪除捺萌。
cookie 設(shè)置的cookie過期時(shí)間之前一直有效档冬,即使窗口或?yàn)g覽器關(guān)閉
2.請(qǐng)解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
一個(gè)用于頁面布局的全新CSS3功能桃纯,F(xiàn)lexbox可以把列表放在同一個(gè)方向(從上到下排列酷誓,從左到右),并讓列表能延伸到占用可用的空間态坦。
較為復(fù)雜的布局還可以通過嵌套一個(gè)伸縮容器(flex container)來實(shí)現(xiàn)盐数。
采用Flex布局的元素,稱為Flex容器(flex container)伞梯,簡稱"容器"玫氢。
它的所有子元素自動(dòng)成為容器成員,稱為Flex項(xiàng)目(flex item)谜诫,簡稱"項(xiàng)目"漾峡。
常規(guī)布局是基于塊和內(nèi)聯(lián)流方向,而Flex布局是基于flex-flow流可以很方便的用來做局中猜绣,能對(duì)不同屏幕大小自適應(yīng)灰殴。
在布局上有了比以前更加靈活的空間。
3.為什么要初始化CSS樣式?
因?yàn)闉g覽器的兼容問題掰邢,不同瀏覽器對(duì)有些標(biāo)簽的默認(rèn)值是不同的牺陶,如果沒對(duì)CSS初始化往往會(huì)出現(xiàn)瀏覽器之間的頁面顯示差異。
當(dāng)然辣之,初始化樣式會(huì)對(duì)SEO有一定的影響掰伸,但魚和熊掌不可兼得,但力求影響最小的情況下初始化怀估。
最簡單的初始化方法: * {padding: 0; margin: 0;} (強(qiáng)烈不建議)
淘寶的樣式初始化代碼:
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.如何實(shí)現(xiàn)數(shù)組的隨機(jī)排序狮鸭?
方法一:
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 添加的(嚴(yán)格)運(yùn)行模式,這種模式使得 Javascript 在更嚴(yán)格的條件下運(yùn)行,
使JS編碼更加規(guī)范化的模式,消除Javascript語法的一些不合理、不嚴(yán)謹(jǐn)之處歧蕉,減少一些怪異行為灾部。
默認(rèn)支持的糟糕特性都會(huì)被禁用,比如不能用with惯退,也不能在意外的情況下給全局變量賦值;
全局變量的顯示聲明,函數(shù)必須聲明在頂層赌髓,不允許在非函數(shù)代碼塊內(nèi)聲明函數(shù),arguments.callee也不允許使用;
消除代碼運(yùn)行的一些不安全之處催跪,保證代碼運(yùn)行的安全,限制函數(shù)中的arguments修改锁蠕,嚴(yán)格模式下的eval函數(shù)的行為和非嚴(yán)格模式的也不相同;
提高編譯器效率,增加運(yùn)行速度懊蒸;
為未來新版本的Javascript標(biāo)準(zhǔn)化做鋪墊荣倾。
5.http狀態(tài)碼有那些?分別代表是什么意思骑丸?
100-199 用于指定客戶端應(yīng)相應(yīng)的某些動(dòng)作舌仍。
200-299 用于表示請(qǐng)求成功。
300-399 用于已經(jīng)移動(dòng)的文件并且常被包含在定位頭信息中指定新的地址信息者娱。
400-499 用于指出客戶端的錯(cuò)誤抡笼。400 1、語義有誤黄鳍,當(dāng)前請(qǐng)求無法被服務(wù)器理解推姻。401 當(dāng)前請(qǐng)求需要用戶驗(yàn)證 403 服務(wù)器已經(jīng)理解請(qǐng)求,但是拒絕執(zhí)行它框沟。
500-599 用于支持服務(wù)器錯(cuò)誤藏古。 503 – 服務(wù)不可用