前端面試題

數(shù)組去重

indexOf()方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置吏垮。

新建一新數(shù)組,遍歷傳入數(shù)組罐旗,值不在新數(shù)組就push進(jìn)該新數(shù)組中

```

function unip(array){

var team=[]

for(var i=0 ; i

if(team.indexOf(array[i])<0){

team.push(array[i]);

}

}

return team

}

var arr=[1,2,3,4,5,6,7,7,7,8,8,9]

console.log(unip(arr));

```

ES6里新添加了兩個(gè)很好用的東西膳汪,set和Array.from。

set是一種新的數(shù)據(jù)結(jié)構(gòu)九秀,它可以接收一個(gè)數(shù)組或者是類數(shù)組對(duì)象遗嗽,自動(dòng)去重其中的重復(fù)項(xiàng)目。

Array.from的作用鼓蜒,就是可以把類數(shù)組對(duì)象痹换、可迭代對(duì)象轉(zhuǎn)化為數(shù)組

```

var arr1=[1,2,3,4,4,5,5,6,7,7]

var arr2= new Set(arr1)

var arr3= Array.from(arr2)

console.log(arr3)

```

JavaScript中如何檢測(cè)一個(gè)變量是一個(gè)String類型征字?請(qǐng)寫出函數(shù)實(shí)現(xiàn)

```

typeof(obj) === "string"

typeof 37 === 'number';

typeof function(){} === 'function';

```

請(qǐng)用js去除字符串空格

1)去除所有空格: str = str.replace(/\s*/g,"");

?2)str.trim()局限性:無法去除中間的空格

var str = " ??xiao ?ming ??";

var str2 = str.trim();

console.log(str2); ??//xiao ?ming

str.trimLeft(),str.trimRight()分別用于去除字符串左右空格

?3)使用jquery,$.trim(str)方法



你如何獲取瀏覽器URL中查詢字符串中的參數(shù)娇豫?

split()方法用于把一個(gè)字符串分割成字符串?dāng)?shù)組匙姜。

function showWindowHref(){

????var s

????var args = sHref.split('?');

????if(args[0] == sHref){

????????return "";

????}

????var arr = args[1].split('&');

????var obj = {};

????for(var i = 0;i< arr.length;i++){

????????var arg = arr[i].split('=');

????????obj[arg[0]] = arg[1];

????}

????return obj;

}

var href = showWindowHref(); // obj

console.log(href); // xiaoming


js?字符串操作函數(shù)

concat() –將兩個(gè)或多個(gè)字符的文本組合起來,返回一個(gè)新的字符串冯痢。

indexOf() –返回字符串中一個(gè)子串第一處出現(xiàn)的索引氮昧。如果沒有匹配項(xiàng)展融,返回 -1 弄跌。

charAt() –返回指定位置的字符扭屁。

lastIndexOf() –返回字符串中一個(gè)子串最后一處出現(xiàn)的索引猜惋,如果沒有匹配項(xiàng)尽狠,返回 -1 晰骑。

match() –檢查一個(gè)字符串是否匹配一個(gè)正則表達(dá)式胀滚。

substr()函數(shù) -- 返回從string的startPos位置离陶,長(zhǎng)度為length的字符串

substring() –返回字符串的一個(gè)子串澎迎。傳入?yún)?shù)是起始位置和結(jié)束位置庐杨。

slice() –提取字符串的一部分,并返回一個(gè)新字符串夹供。

replace() –用來查找匹配一個(gè)正則表達(dá)式的字符串灵份,然后使用新字符串代替匹配的字符串。

search() –執(zhí)行一個(gè)正則表達(dá)式匹配查找哮洽。如果查找成功填渠,返回字符串中匹配的索引值。否則返回 -1 鸟辅。

split() –通過將字符串劃分成子串氛什,將一個(gè)字符串做成一個(gè)字符串?dāng)?shù)組。

length –返回字符串的長(zhǎng)度匪凉,所謂字符串的長(zhǎng)度是指其包含的字符的個(gè)數(shù)枪眉。

toLowerCase() –將整個(gè)字符串轉(zhuǎn)成小寫字母。

toUpperCase() –將整個(gè)字符串轉(zhuǎn)成大寫字母


怎樣添加再层、移除贸铜、移動(dòng)、復(fù)制聂受、創(chuàng)建和查找節(jié)點(diǎn)蒿秦?

1)創(chuàng)建新節(jié)

  createDocumentFragment() //創(chuàng)建一個(gè)DOM片段

  createElement() //創(chuàng)建一個(gè)具體的元素

  createTextNode() //創(chuàng)建一個(gè)文本節(jié)點(diǎn)

2)添加、移除蛋济、替換渤早、插入

  appendChild() //添加

  removeChild() //移除

  replaceChild() //替換

  insertBefore() //插入

3)查找

  getElementsByTagName() //通過標(biāo)簽名稱

  getElementsByName() //通過元素的Name屬性的值

getElementById() //通過元素Id,唯一性



js判斷字符是否為空的方法

function isEmpty(obj){

????if(typeof obj == "undefined" || obj == null || obj == ""){

????????return true;

????}else{

????????return false;

????}

}


如何理解閉包瘫俊?

由于在Javascript語言中鹊杖,只有函數(shù)內(nèi)部的子函數(shù)才能讀取局部變量,因此可以把閉包簡(jiǎn)單理解成"定義在一個(gè)函數(shù)內(nèi)部的函數(shù)"扛芽。

所以骂蓖,在本質(zhì)上,閉包就是將函數(shù)內(nèi)部和函數(shù)外部連接起來的一座橋梁川尖。

它的最大用處有兩個(gè)登下,一個(gè)是前面提到的可以讀取函數(shù)內(nèi)部的變量,另一個(gè)就是讓這些變量的值始終保持在內(nèi)存中叮喳。


根據(jù)作用域鏈的規(guī)則被芳,底層作用域沒有聲明的變量,會(huì)向上一級(jí)找馍悟,找到就返回畔濒,沒找到就一直找,直到window的變量锣咒,沒有就返回undefined侵状。這里明顯count 是函數(shù)內(nèi)部的flag2 的那個(gè)count 。


var?count=10; ??//全局作用域 標(biāo)記為flag1function add(){

????var?count=0; ???//函數(shù)全局作用域 標(biāo)記為flag2

????return?function(){

????????count+=1; ??//函數(shù)的內(nèi)部作用域????????alert(count);

????}

}var?s =?add()

s();//輸出1

s();//輸出2


變量的作用域

要理解閉包毅整,首先必須理解Javascript特殊的變量作用域趣兄。

變量的作用域分類:全局變量和局部變量。

特點(diǎn):

1悼嫉、函數(shù)內(nèi)部可以讀取函數(shù)外部的全局變量艇潭;在函數(shù)外部無法讀取函數(shù)內(nèi)的局部變量。

2戏蔑、函數(shù)內(nèi)部聲明變量的時(shí)候蹋凝,一定要使用var命令。如果不用的話辛臊,你實(shí)際上聲明了一個(gè)全局變量仙粱!


使用閉包的注意點(diǎn)

1)濫用閉包,會(huì)造成內(nèi)存泄漏:由于閉包會(huì)使得函數(shù)中的變量都被保存在內(nèi)存中彻舰,內(nèi)存消耗很大伐割,所以不能濫用閉包,否則會(huì)造成網(wǎng)頁(yè)的性能問題刃唤,在IE中可能導(dǎo)致內(nèi)存泄露隔心。解決方法是,在退出函數(shù)之前尚胞,將不使用的局部變量全部刪除硬霍。

2)會(huì)改變父函數(shù)內(nèi)部變量的值。所以笼裳,如果你把父函數(shù)當(dāng)作對(duì)象(object)使用唯卖,把閉包當(dāng)作它的公用方法(Public Method)粱玲,把內(nèi)部變量當(dāng)作它的私有屬性(private value),這時(shí)一定要小心拜轨,不要隨便改變父函數(shù)內(nèi)部變量的值抽减。


什么是跨域?

由于瀏覽器同源策略橄碾,凡是發(fā)送請(qǐng)求url的協(xié)議卵沉、域名、端口三者之間任意一與當(dāng)前頁(yè)面地址不同即為跨域法牲。存在跨域的情況:

網(wǎng)絡(luò)協(xié)議不同史汗,如http協(xié)議訪問https協(xié)議。

端口不同拒垃,如80端口訪問8080端口停撞。

域名不同,如qianduanblog.com訪問baidu.com恶复。

子域名不同怜森,如abc.qianduanblog.com訪問def.qianduanblog.com。

域名和域名對(duì)應(yīng)ip,如www.a.com訪問20.205.28.90.


跨域請(qǐng)求資源的方法:

porxy代理

定義和用法:proxy代理用于將請(qǐng)求發(fā)送給后臺(tái)服務(wù)器谤牡,通過服務(wù)器來發(fā)送請(qǐng)求副硅,然后將請(qǐng)求的結(jié)果傳遞給前端。

實(shí)現(xiàn)方法:通過nginx代理翅萤;

注意點(diǎn):1恐疲、如果你代理的是https協(xié)議的請(qǐng)求,那么你的proxy首先需要信任該證書(尤其是自定義證書)或者忽略證書檢查套么,否則你的請(qǐng)求無法成功培己。


CORS【Cross-Origin Resource Sharing】

定義和用法:是現(xiàn)代瀏覽器支持跨域資源請(qǐng)求的一種最常用的方式。

使用方法:一般需要后端人員在處理請(qǐng)求數(shù)據(jù)的時(shí)候胚泌,添加允許跨域的相關(guān)操作


jsonp

定義和用法:通過動(dòng)態(tài)插入一個(gè)script標(biāo)簽省咨。瀏覽器對(duì)script的資源引用沒有同源限制,同時(shí)資源加載到頁(yè)面后會(huì)立即執(zhí)行(沒有阻塞的情況下)玷室。

特點(diǎn):通過情況下零蓉,通過動(dòng)態(tài)創(chuàng)建script來讀取他域的動(dòng)態(tài)資源,獲取的數(shù)據(jù)一般為json格式

缺點(diǎn):1穷缤、這種方式無法發(fā)送post請(qǐng)求(這里)

[if !supportLists]2敌蜂、[endif]另外要確定jsonp的請(qǐng)求是否失敗并不容易,大多數(shù)框架的實(shí)現(xiàn)都是結(jié)合超時(shí)時(shí)間來判定津肛。


垃圾回收機(jī)制

垃圾收集器會(huì)定期(周期性)找出那些不在繼續(xù)使用的變量章喉,然后釋放其內(nèi)存。但是這個(gè)過程不是實(shí)時(shí)的,因?yàn)槠溟_銷比較大秸脱,所以垃圾回收器會(huì)按照固定的時(shí)間間隔周期性的執(zhí)行落包。


開發(fā)過程中遇到的內(nèi)存泄露情況,如何解決的撞反?

1妥色、定義和用法:

內(nèi)存泄露是指一塊被分配的內(nèi)存既不能使用,又不能回收遏片,直到瀏覽器進(jìn)程結(jié)束。C#和Java等語言采用了自動(dòng)垃圾回收方法管理內(nèi)存撮竿,幾乎不會(huì)發(fā)生內(nèi)存泄露吮便。我們知道,瀏覽器中也是采用自動(dòng)垃圾回收方法管理內(nèi)存幢踏,但由于瀏覽器垃圾回收方法有bug髓需,會(huì)產(chǎn)生內(nèi)存泄露。

2房蝉、內(nèi)存泄露的幾種情況:

(1)僚匆、當(dāng)頁(yè)面中元素被移除或替換時(shí),若元素綁定的事件仍沒被移除搭幻,在IE中不會(huì)作出恰當(dāng)處理咧擂,此時(shí)要先手工移除事件,不然會(huì)存在內(nèi)存泄露檀蹋。


????var?btn = document.getElementById("myBtn");

????btn.onclick =?function(){

????btn.onclick = null;

????????document.getElementById("myDiv").innerHTML = "Processing...";

????}


[if !supportLists](2)?[endif]松申、由于是函數(shù)內(nèi)定義函數(shù),并且內(nèi)部函數(shù)--事件回調(diào)的引用外暴了俯逾,形成了閉包贸桶。閉包可以維持函數(shù)內(nèi)局部變量,使其得不到釋放桌肴。

function bindEvent(){

????var?obj=document.createElement("XXX");

????obj.onclick=function(){

?????????//Even if it's a empty function????}

????obj=null;

}


JavaScript數(shù)組(Array)對(duì)象

Array對(duì)象屬性

constructor返回對(duì)創(chuàng)建此對(duì)象的數(shù)組函數(shù)的引用皇筛。

length設(shè)置或返回?cái)?shù)組中元素的數(shù)目。

prototype使您有能力向?qū)ο筇砑訉傩院头椒ā?/p>

Array對(duì)象方法

concat()連接兩個(gè)或更多的數(shù)組坠七,并返回結(jié)果水醋。

join()把數(shù)組的所有元素放入一個(gè)字符串。元素通過指定的分隔符進(jìn)行分隔灼捂。

pop()刪除并返回?cái)?shù)組的最后一個(gè)元素离例。 ?

shift()刪除并返回?cái)?shù)組的第一個(gè)元素

push()向數(shù)組的末尾添加一個(gè)或更多元素,并返回新的長(zhǎng)度悉稠。

unshift()向數(shù)組的開頭添加一個(gè)或更多元素宫蛆,并返回新的長(zhǎng)度。

reverse()顛倒數(shù)組中元素的順序。

slice()從某個(gè)已有的數(shù)組返回選定的元素

sort()對(duì)數(shù)組的元素進(jìn)行排序

splice()刪除元素耀盗,并向數(shù)組添加新元素想虎。

toSource()返回該對(duì)象的源代碼。

toString()把數(shù)組轉(zhuǎn)換為字符串叛拷,并返回結(jié)果舌厨。

toLocaleString()把數(shù)組轉(zhuǎn)換為本地?cái)?shù)組,并返回結(jié)果忿薇。

valueOf()返回?cái)?shù)組對(duì)象的原始值




jQuery庫(kù)中的 $() 是什么裙椭?

$()函數(shù)是 jQuery() 函數(shù)的別稱。$() 函數(shù)用于將任何對(duì)象包裹成 jQuery 對(duì)象署浩,接著你就被允許調(diào)用定義在 jQuery 對(duì)象上的多個(gè)不同方法揉燃。你可以將一個(gè)選擇器字符串傳入 $() 函數(shù),它會(huì)返回一個(gè)包含所有匹配的 DOM 元素?cái)?shù)組的 jQuery 對(duì)象筋栋。


如何找到所有HTML select標(biāo)簽的選中項(xiàng)炊汤?

$('[name=selectname] :selected')


$(this)和 this 關(guān)鍵字在 jQuery 中有何不同?

$(this)返回一個(gè) jQuery 對(duì)象弊攘,你可以對(duì)它調(diào)用多個(gè) jQuery 方法抢腐,比如用 text() 獲取文本,用val() 獲取值等等襟交。

而this代表當(dāng)前元素迈倍,它是 JavaScript 關(guān)鍵詞中的一個(gè),表示上下文中的當(dāng)前 DOM 元素婿着。你不能對(duì)它調(diào)用 jQuery 方法授瘦,直到它被 $() 函數(shù)包裹,例如 $(this)竟宋。


jquery怎么移除標(biāo)簽onclick屬性提完?

jQuery屬性操作 - attr() 方法

獲得a標(biāo)簽的onclick屬性: $("a").attr("onclick")

刪除onclick屬性:$("a").removeAttr("onclick");

設(shè)置onclick屬性:$("a").attr("onclick","test();");







jquery中addClass,removeClass,toggleClass的使用。

$(selector).addClass(class):為每個(gè)匹配的元素添加指定的類名

$(selector).removeClass(class):從所有匹配的元素中刪除全部或者指定的類丘侠,刪除class中某個(gè)值徒欣;

$(selector).toggleClass(class):如果存在(不存在)就刪除(添加)一個(gè)類

$(selector).removeAttr(class);刪除class這個(gè)屬性;


JQuery有幾種選擇器?

(1)蜗字、基本選擇器:#id打肝,class,element,*;

(2)、層次選擇器:parent > child挪捕,prev + next 粗梭,prev ~ siblings

(3)、基本過濾器選擇器::first级零,:last 断医,:not ,:even ,:odd 鉴嗤,:eq 斩启,:gt ,:lt

(4)醉锅、內(nèi)容過濾器選擇器: :contains 兔簇,:empty ,:has 硬耍,:parent

(5)垄琐、可見性過濾器選擇器::hidden ,:visible

(6)默垄、屬性過濾器選擇器:[attribute] 此虑,[attribute=value] ,[attribute!=value] 口锭,[attribute^=value] ,[attribute$=value] 介杆,[attribute*=value]

(7)鹃操、子元素過濾器選擇器::nth-child ,:first-child 春哨,:last-child 荆隘,:only-child

(8)、表單選擇器: :input 赴背,:text 椰拒,:password ,:radio 凰荚,:checkbox 燃观,:submit 等;

(9)便瑟、表單過濾器選擇器::enabled 缆毁,:disabled ,:checked 到涂,:selected


$(document).ready()方法和window.onload有什么區(qū)別脊框?

(1)、window.onload方法是在網(wǎng)頁(yè)中所有的元素(包括元素的所有關(guān)聯(lián)文件)完全加載到瀏覽器后才執(zhí)行的践啄。

(2)浇雹、$(document).ready()?方法可以在DOM載入就緒時(shí)就對(duì)其進(jìn)行操縱,并調(diào)用執(zhí)行綁定的函數(shù)屿讽。


如何用jQuery禁用瀏覽器的前進(jìn)后退按鈕昭灵?

  $(document).ready(function() {

    window.history.forward(1);

    //OR window.history.forward(-1);  });


jquery中$.get()提交和$.post()提交有區(qū)別嗎?

相同點(diǎn):都是異步請(qǐng)求的方式來獲取服務(wù)端的數(shù)據(jù);

異同點(diǎn):

1虎锚、請(qǐng)求方式不同:$.get()?方法使用GET方法來進(jìn)行異步請(qǐng)求的硫痰。$.post()?方法使用POST方法來進(jìn)行異步請(qǐng)求的。

2窜护、參數(shù)傳遞方式不同:get請(qǐng)求會(huì)將參數(shù)跟在URL后進(jìn)行傳遞效斑,而POST請(qǐng)求則是作為HTTP消息的實(shí)體內(nèi)容發(fā)送給Web服務(wù)器的,這種傳遞是對(duì)用戶不可見的柱徙。

3缓屠、數(shù)據(jù)傳輸大小不同:get方式傳輸?shù)臄?shù)據(jù)大小不能超過2KB?而POST要大的多

4、安全問題:?GET?方式請(qǐng)求的數(shù)據(jù)會(huì)被瀏覽器緩存起來护侮,因此有安全問題敌完。


寫出一個(gè)簡(jiǎn)單的$.ajax()的請(qǐng)求方式?

$.ajax({

????url:'http://www.baidu.com',

????type:'POST',

????data:data,

????cache:true,

????headers:{},

beforeSend:function(){},

????success:function(){},

????error:function(){},

????complete:function(){}

});


什么是盒子模型羊初?

在網(wǎng)頁(yè)中滨溉,一個(gè)元素占有空間的大小由幾個(gè)部分構(gòu)成,其中包括元素的內(nèi)容(content)长赞,元素的內(nèi)邊距(padding)晦攒,元素的邊框(border),元素的外邊距(margin)四個(gè)部分得哆。這四個(gè)部分占有的空間中脯颜,有的部分可以顯示相應(yīng)的內(nèi)容,而有的部分只用來分隔相鄰的區(qū)域或區(qū)域贩据。4個(gè)部分一起構(gòu)成了css中元素的盒模型栋操。


行內(nèi)元素有哪些?塊級(jí)元素有哪些饱亮?空(void)元素有那些矾芙?

行內(nèi)元素:a、b近尚、span蠕啄、img、input戈锻、strong歼跟、select、label格遭、em哈街、button、textarea塊級(jí)元素:div拒迅、ul骚秦、li她倘、dl、dt作箍、dd硬梁、p、h1-h6胞得、blockquote空元素:即系沒有內(nèi)容的HTML元素荧止,例如:br、meta阶剑、hr跃巡、link、input牧愁、img


簡(jiǎn)述一下src與href的區(qū)別

href是指向網(wǎng)絡(luò)資源所在位置素邪,建立和當(dāng)前元素(錨點(diǎn))或當(dāng)前文檔(鏈接)之間的鏈接,用于超鏈接猪半。

src是指向外部資源的位置兔朦,指向的內(nèi)容將會(huì)嵌入到文檔中當(dāng)前標(biāo)簽所在位置;在請(qǐng)求src資源時(shí)會(huì)將其指向的資源下載并應(yīng)用到文檔內(nèi)磨确,例如js腳本烘绽,img圖片和frame等元素。








簡(jiǎn)述同步和異步的區(qū)別

同步是阻塞模式俐填,異步是非阻塞模式。同步就是指一個(gè)進(jìn)程在執(zhí)行某個(gè)請(qǐng)求的時(shí)候翔忽,若該請(qǐng)求需要一段時(shí)間才能返回信息英融,那么這個(gè)進(jìn)程將會(huì)一直等待下去,直到收到返回信息才繼續(xù)執(zhí)行下去歇式;異步是指進(jìn)程不需要一直等下去驶悟,而是繼續(xù)執(zhí)行下面的操作,不管其他進(jìn)程的狀態(tài)材失。當(dāng)有消息返回時(shí)系統(tǒng)會(huì)通知進(jìn)程進(jìn)行處理痕鳍,這樣可以提高執(zhí)行的效率。


px和em的區(qū)別

相同點(diǎn):px和em都是長(zhǎng)度單位龙巨;

異同點(diǎn):px的值是固定的笼呆,指定是多少就是多少,計(jì)算比較容易旨别。em得值不是固定的诗赌,并且em會(huì)繼承父級(jí)元素的字體大小。瀏覽器的默認(rèn)字體高都是16px秸弛。所以未經(jīng)調(diào)整的瀏覽器都符合: 1em=16px铭若。那么12px=0.75em, 10px=0.625em洪碳。


瀏覽器的內(nèi)核分別是什么?

IE: trident內(nèi)核

Firefox:gecko內(nèi)核

Safari:webkit內(nèi)核

Opera:以前是presto內(nèi)核,Opera現(xiàn)已改用Google Chrome的Blink內(nèi)核

Chrome:Blink(基于webkit叼屠,Google與Opera Software共同開發(fā))






什么叫優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)瞳腌?

漸進(jìn)增強(qiáng)progressive enhancement:

針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁(yè)面,保證最基本的功能镜雨,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果嫂侍、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)。

優(yōu)雅降級(jí)graceful degradation:

一開始就構(gòu)建完整的功能冷离,然后再針對(duì)低版本瀏覽器進(jìn)行兼容吵冒。

區(qū)別:

a.優(yōu)雅降級(jí)是從復(fù)雜的現(xiàn)狀開始,并試圖減少用戶體驗(yàn)的供給

b.漸進(jìn)增強(qiáng)則是從一個(gè)非澄靼基礎(chǔ)的痹栖,能夠起作用的版本開始,并不斷擴(kuò)充瞭空,以適應(yīng)未來環(huán)境的需要

c.降級(jí)(功能衰減)意味著往回看揪阿;而漸進(jìn)增強(qiáng)則意味著朝前看,同時(shí)保證其根基處于安全地帶


sessionStorage咆畏、localStorage 和?cookie 之間的區(qū)別

共同點(diǎn):用于瀏覽器端存儲(chǔ)的緩存數(shù)據(jù)

不同點(diǎn):

(1)南捂、存儲(chǔ)內(nèi)容是否發(fā)送到服務(wù)器端:當(dāng)設(shè)置了Cookie后,數(shù)據(jù)會(huì)發(fā)送到服務(wù)器端旧找,造成一定的寬帶浪費(fèi)溺健; web storage,會(huì)將數(shù)據(jù)保存到本地,不會(huì)造成寬帶浪費(fèi)钮蛛;

(2)鞭缭、數(shù)據(jù)存儲(chǔ)大小不同:Cookie數(shù)據(jù)不能超過4K,適用于會(huì)話標(biāo)識(shí);web storage數(shù)據(jù)存儲(chǔ)可以達(dá)到5M;

(3)魏颓、數(shù)據(jù)存儲(chǔ)的有效期限不同:cookie只在設(shè)置了Cookid過期時(shí)間之前一直有效岭辣,即使關(guān)閉窗口或者瀏覽器;sessionStorage,僅在關(guān)閉瀏覽器之前有效甸饱;localStorage,數(shù)據(jù)存儲(chǔ)永久有效沦童;

(4)、作用域不同:cookie和localStorage是在同源同窗口中都是共享的叹话;sessionStorage不在不同的瀏覽器窗口中共享偷遗,即使是同一個(gè)頁(yè)面;


Ajax的優(yōu)缺點(diǎn)及工作原理渣刷?

定義和用法:

AJAX = Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)鹦肿。Ajax 是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)。Ajax 是一種在無需重新加載整個(gè)網(wǎng)頁(yè)的情況下辅柴,能夠更新部分網(wǎng)頁(yè)的技術(shù)箩溃。

傳統(tǒng)的網(wǎng)頁(yè)(不使用Ajax)如果需要更新內(nèi)容瞭吃,必須重載整個(gè)網(wǎng)頁(yè)頁(yè)面。

優(yōu)點(diǎn):

1.減輕服務(wù)器的負(fù)擔(dān),按需取數(shù)據(jù),最大程度的減少冗余請(qǐng)求

2.局部刷新頁(yè)面,減少用戶心理和實(shí)際的等待時(shí)間,帶來更好的用戶體驗(yàn)

3.基于xml標(biāo)準(zhǔn)化,并被廣泛支持,不需安裝插件等,進(jìn)一步促進(jìn)頁(yè)面和數(shù)據(jù)的分離

缺點(diǎn):

1.AJAX大量的使用了javascript和ajax引擎,這些取決于瀏覽器的支持.在編寫的時(shí)候考慮對(duì)瀏覽器的兼容性.

2.AJAX只是局部刷新,所以頁(yè)面的后退按鈕是沒有用的.

3.對(duì)流媒體還有移動(dòng)設(shè)備的支持不是太好等

AJAX的工作原理:

1.創(chuàng)建ajax對(duì)象(XMLHttpRequest/ActiveXObject(Microsoft.XMLHttp))

2.判斷數(shù)據(jù)傳輸方式(GET/POST)

3.打開鏈接 open()

4.發(fā)送 send()

5.當(dāng)ajax對(duì)象完成第四步(onreadystatechange)數(shù)據(jù)接收完成涣旨,判斷http響應(yīng)狀態(tài)(status)200-300之間或者304(緩存)執(zhí)行回調(diào)函數(shù)




請(qǐng)指出document load和document ready的區(qū)別歪架?

共同點(diǎn):這兩種事件都代表的是頁(yè)面文檔加載時(shí)觸發(fā)。

異同點(diǎn):

ready事件的觸發(fā)霹陡,表示文檔結(jié)構(gòu)已經(jīng)加載完成(不包含圖片等非文字媒體文件)和蚪。

onload事件的觸發(fā),表示頁(yè)面包含圖片等文件在內(nèi)的所有元素都加載完成


寫一個(gè)function烹棉,清除字符串前后的空格攒霹。(兼容所有瀏覽器)

function trim(str) {

????if?(str && typeof?str === "string") {

????????return?str.replace(/(^\s*)|(\s*)$/g,""); //去除前后空白符????}

}

使用正則表達(dá)式驗(yàn)證郵箱格式

?var?reg = /^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/;

?var?email = "example@qq.com";

?console.log(reg.test(email)); ?// true ?


規(guī)避javascript多人開發(fā)函數(shù)重名問題

命名空間

封閉空間

js模塊化mvc(數(shù)據(jù)層、表現(xiàn)層浆洗、控制層)

seajs

變量轉(zhuǎn)換成對(duì)象的屬性

對(duì)象化


請(qǐng)說出三種減低頁(yè)面加載時(shí)間的方法

壓縮css催束、js文件

合并js、css文件伏社,減少http請(qǐng)求

外部js抠刺、css文件放在最底下

減少dom操作,盡可能用變量替代不必要的dom操作


你所了解到的Web攻擊技術(shù)

[if !supportLists](1)[endif]XSS(Cross-Site Scripting摘昌,跨站腳本攻擊):指通過存在安全漏洞的Web網(wǎng)站注冊(cè)用戶的瀏覽器內(nèi)運(yùn)行非法的HTML標(biāo)簽或者JavaScript進(jìn)行的一種攻擊速妖。(2)SQL注入攻擊(3)CSRF(Cross-Site Request Forgeries,跨站點(diǎn)請(qǐng)求偽造):指攻擊者通過設(shè)置好的陷阱聪黎,強(qiáng)制對(duì)已完成的認(rèn)證用戶進(jìn)行非預(yù)期的個(gè)人信息或設(shè)定信息等某些狀態(tài)更新罕容。


web前端開發(fā),如何提高頁(yè)面性能優(yōu)化稿饰?

內(nèi)容方面:

1.減少 HTTP 請(qǐng)求 (Make Fewer HTTP Requests)

2.減少 DOM 元素?cái)?shù)量 (Reduce the Number of DOM Elements)

3.使得 Ajax 可緩存 (Make Ajax Cacheable)

針對(duì)CSS:

1.把 CSS 放到代碼頁(yè)上端 (Put Stylesheets at the Top)

2.從頁(yè)面中剝離 JavaScript 與 CSS (Make JavaScript and CSS External)

3.精簡(jiǎn) JavaScript 與 CSS (Minify JavaScript and CSS)

4.避免 CSS 表達(dá)式 (Avoid CSS Expressions)

針對(duì)JavaScript:

1.腳本放到 HTML 代碼頁(yè)底部 (Put Scripts at the Bottom)

2.從頁(yè)面中剝離 JavaScript 與 CSS (Make JavaScript and CSS External)

3.精簡(jiǎn) JavaScript 與 CSS (Minify JavaScript and CSS)

4.移除重復(fù)腳本 (Remove Duplicate Scripts)

面向圖片(Image):

1.優(yōu)化圖片

2不要在 HTML 中使用縮放圖片

3使用恰當(dāng)?shù)膱D片格式

4使用 CSS Sprites 技巧對(duì)圖片優(yōu)化


瀏覽器是如何渲染頁(yè)面的杀赢?

渲染的流程如下:

1.解析HTML文件,創(chuàng)建DOM樹湘纵。

自上而下,遇到任何樣式(link滤淳、style)與腳本(script)都會(huì)阻塞(外部樣式不阻塞后續(xù)外部腳本的加載)梧喷。

2.解析CSS。優(yōu)先級(jí):瀏覽器默認(rèn)設(shè)置<用戶設(shè)置<外部樣式<內(nèi)聯(lián)樣式

3.將CSS與DOM合并脖咐,構(gòu)建渲染樹(Render Tree)

4.布局和繪制铺敌,重繪(repaint)和重排(reflow)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市屁擅,隨后出現(xiàn)的幾起案子偿凭,更是在濱河造成了極大的恐慌,老刑警劉巖派歌,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弯囊,死亡現(xiàn)場(chǎng)離奇詭異痰哨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)匾嘱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門斤斧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人霎烙,你說我怎么就攤上這事撬讽。” “怎么了悬垃?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵游昼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我尝蠕,道長(zhǎng)烘豌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任趟佃,我火速辦了婚禮扇谣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闲昭。我一直安慰自己罐寨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布序矩。 她就那樣靜靜地躺著鸯绿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪簸淀。 梳的紋絲不亂的頭發(fā)上瓶蝴,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音租幕,去河邊找鬼舷手。 笑死,一個(gè)胖子當(dāng)著我的面吹牛劲绪,可吹牛的內(nèi)容都是我干的男窟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼贾富,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼歉眷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颤枪,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤汗捡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后畏纲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扇住,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡春缕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了台囱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淡溯。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖簿训,靈堂內(nèi)的尸體忽然破棺而出咱娶,到底是詐尸還是另有隱情,我是刑警寧澤强品,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布膘侮,位于F島的核電站,受9級(jí)特大地震影響的榛,放射性物質(zhì)發(fā)生泄漏琼了。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一夫晌、第九天 我趴在偏房一處隱蔽的房頂上張望雕薪。 院中可真熱鬧,春花似錦晓淀、人聲如沸所袁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)燥爷。三九已至,卻和暖如春懦窘,著一層夾襖步出監(jiān)牢的瞬間前翎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工畅涂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留港华,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓午衰,卻偏偏與公主長(zhǎng)得像苹丸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苇经,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    程序員poetry閱讀 114,426評(píng)論 24 450
  • <a name='html'>HTML</a> Doctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別? (1)宦言、<...
    clark124閱讀 3,498評(píng)論 1 19
  • 請(qǐng)參看我github中的wiki扇单,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon閱讀 7,133評(píng)論 2 19
  • ns-3-manual.pdf 隨機(jī)值翻譯 1.2 Random Variables ns-3包含一個(gè)內(nèi)置的偽隨機(jī)...
    shawn168閱讀 1,755評(píng)論 0 1
  • 頂著朝陽(yáng)奠旺,踏著灰色泥石臺(tái)階蜘澜,遠(yuǎn)眺晴空的青山施流,我心情有些忐忑地走上熟悉的高架橋。抬頭鄙信,前面是密密麻麻的一片人瞪醋,日光的...
    石榴沒有籽閱讀 263評(píng)論 0 1