前端基礎(chǔ)面試題(JavaScript部分)

1恨憎、什么是JavaScript咕痛?

基于對(duì)象和事件驅(qū)動(dòng)可解釋性腳本語(yǔ)言

2、JavaScript與ECMAScript的關(guān)系喇嘱?

JavaScript是ECMAScript的表現(xiàn)茉贡,ECMAScript是JavaScript的規(guī)范

3、變量的命名規(guī)則者铜?

1.名字見(jiàn)名知義腔丧,遵循駝峰標(biāo)識(shí)。例:userName passWord

2.變量名只能以字母,_,$開(kāi)頭

3.不能使用關(guān)鍵和保留字

4.變量名不要相同(后面的會(huì)覆蓋前面)

4作烟、window.onload的作用愉粤?

window.onload是等文檔和資源都加載完成后調(diào)用的事件,保證js獲取元素的時(shí)候拿撩,已經(jīng)加載衣厘。

5、js數(shù)據(jù)類(lèi)型?

基本數(shù)據(jù)類(lèi)型:Number String Boolean null undefined

復(fù)雜類(lèi)型:Object(array影暴,function,object)

6错邦、js有哪些內(nèi)置對(duì)象?

數(shù)據(jù)封裝類(lèi)對(duì)象:Object型宙、Array撬呢、Boolean、Number 和 String

其他對(duì)象:Function妆兑、Arguments魂拦、Math、Date搁嗓、RegExp晨另、Error

7、this對(duì)象的理解

this存在任何地方谱姓,不同環(huán)境代表不同的含義,取決于調(diào)用時(shí)的環(huán)境刨晴。

A.事件處理函數(shù)中的this---觸發(fā)事件的對(duì)象

document.onclick = function(){ alert(this) }

B.普通函數(shù)中的this---window

function sum(){ alert(this)} sum()

8屉来、eval是做什么的?

它的功能是把對(duì)應(yīng)的字符串解析成JS代碼并運(yùn)行狈癞;

應(yīng)該避免使用eval茄靠,不安全,非常耗性能(2次蝶桶,一次解析成js語(yǔ)句慨绳,一次執(zhí)行)。

由JSON字符串轉(zhuǎn)換為JSON對(duì)象的時(shí)候可以用eval真竖,var obj =eval('('+ str +')')脐雪。

9、null和undefined的區(qū)別恢共?

undefined:

(1)變量被聲明了战秋,但沒(méi)有賦值時(shí),就等于undefined讨韭。

(2) 調(diào)用函數(shù)時(shí)脂信,應(yīng)該提供的參數(shù)沒(méi)有提供,該參數(shù)等于undefined透硝。

(3)對(duì)象沒(méi)有賦值的屬性狰闪,該屬性的值為undefined。

(4)函數(shù)沒(méi)有返回值時(shí)濒生,默認(rèn)返回undefined埋泵。

Undefined:訪問(wèn)一個(gè)未初始化變量(聲明完沒(méi)有賦值的變量)返回的值,表示空變量

null:

(1) 作為函數(shù)的參數(shù)罪治,表示該函數(shù)的參數(shù)不是對(duì)象秋泄。

(2) 作為對(duì)象原型鏈的終點(diǎn)琐馆。

Null訪問(wèn)一個(gè)不存在對(duì)象返回的值,表示空對(duì)象恒序,轉(zhuǎn)為數(shù)值時(shí)為NaN瘦麸。

10、運(yùn)算符的種類(lèi)歧胁?

算術(shù)運(yùn)算符滋饲,賦值運(yùn)算符,比較運(yùn)算符喊巍,邏輯運(yùn)算符屠缭,三目運(yùn)算符

4、☆var a = 10;var b = a++; a崭参、b最后的結(jié)果是呵曹?

a=11 b=10

11、“==”與“===”的區(qū)別何暮?

==,判斷相等奄喂,判斷的過(guò)程中會(huì)隱式轉(zhuǎn)換為number類(lèi)型進(jìn)行比較 “10”==10 true

=== 恒等,嚴(yán)格相等海洼,“10”===10 false

12跨新、☆console.log(0.1+0.2 == 0.3)。

False坏逢,有些小數(shù)在運(yùn)算的過(guò)程中會(huì)出現(xiàn)偏差域帐,因此最好不要用小數(shù)作為判斷條件

13、☆NaN會(huì)在什么樣的情況下出現(xiàn)呢是整?列舉出現(xiàn)這種情況的代碼肖揣。

NaN:not a number

A.自己定義

B.運(yùn)算過(guò)程中出現(xiàn)錯(cuò)誤,原本應(yīng)該是數(shù)字的地方出現(xiàn)一些不能轉(zhuǎn)換為數(shù)字的值

10+“s” ,Number(“s”),

14浮入、☆列舉三種強(qiáng)制類(lèi)型轉(zhuǎn)換和2種隱式類(lèi)型轉(zhuǎn)換许饿。

Number(“10”); 強(qiáng)轉(zhuǎn)為Number

parseInt(“10.5”);強(qiáng)轉(zhuǎn)為number,取整

parseFloat(“10.5”);強(qiáng)轉(zhuǎn)為number舵盈,保留小數(shù)

String(10); 強(qiáng)轉(zhuǎn)為字符串

10.toString(); 強(qiáng)轉(zhuǎn)為字符串

“10”+20 陋率; 1020 +號(hào)遇到字符串變成連接符,20隱式轉(zhuǎn)換為字符串

1+true; 2 true隱式轉(zhuǎn)換為1

10==“10” “10”隱式轉(zhuǎn)換為10

15秽晚、document.write()與innerHTML的區(qū)別瓦糟?

document.write:

操作body的內(nèi)容

會(huì)覆蓋之前已經(jīng)存在的body中的內(nèi)容,document.write添加的內(nèi)容會(huì)疊加

innerHTML:

操作所有閉合標(biāo)簽的內(nèi)容

會(huì)覆蓋之前的所有內(nèi)容

16赴蝇、寫(xiě)一個(gè)獲取非行間樣式的函數(shù)

function getStyle(elem,attr) {//elem元素,attr屬性
if(elem.currentStyle){//ie
return elem.currentStyle[attr];
}else{//標(biāo)準(zhǔn)
return getComputedStyle(elem)[attr];
}
}

17菩浙、說(shuō)說(shuō)你對(duì)作用域鏈的理解?

作用域鏈?zhǔn)莏s中的一種查找機(jī)制,從當(dāng)前作用域查找劲蜻,當(dāng)前作用域沒(méi)有往上一級(jí)作用域查找陆淀,一直到最外層,如果都找不到則是is not define

作用域鏈?zhǔn)莏s中的一種查找機(jī)制先嬉,從當(dāng)前作用域查找轧苫,當(dāng)前作用域沒(méi)有往上一級(jí)作用域查找,一直到最外層疫蔓,如果都找不到則是is not define

18含懊、請(qǐng)解釋變量提升?

瀏覽器解析js代碼至少會(huì)經(jīng)過(guò)兩個(gè)過(guò)程衅胀,預(yù)解析和逐步執(zhí)行
預(yù)解析:找東西var岔乔,function,如果找到var滚躯,會(huì)在內(nèi)存中存儲(chǔ)變量沒(méi)有值雏门,function則會(huì)存儲(chǔ)整個(gè)函數(shù)
逐步執(zhí)行:逐行執(zhí)行代碼
console.log(a); //undefined 不會(huì)報(bào)錯(cuò) 找到var存儲(chǔ)了變量a,但是沒(méi)有賦值默認(rèn)為undefined
var a = 10; //給內(nèi)存中的a賦值10
console.log(a); //10

//2.function
console.log(sum); //整個(gè)函數(shù)掸掏,找到函數(shù)會(huì)將整個(gè)函數(shù)都存儲(chǔ)在內(nèi)存中
sum(); //存儲(chǔ)了整個(gè)函數(shù)茁影,因此可以在前面調(diào)用
function sum() {
console.log(10+20);
}

19、JavaScript兩種變量范圍有什么不同阅束?

Js中兩種變量,全局變量和局部變量

全局變量:函數(shù)外聲明茄唐,在任何地方都能被修改和訪問(wèn)息裸,會(huì)一直存儲(chǔ)在內(nèi)存中

局部變量:函數(shù)內(nèi)聲明,只能在函數(shù)內(nèi)部使用沪编,出了函數(shù){}就會(huì)被銷(xiāo)毀

20呼盆、定時(shí)器的分類(lèi)?他們的區(qū)別及用法是什么蚁廓?

Js中有兩種定時(shí)器:setInterval:間歇執(zhí)行访圃,setTimeout:延遲執(zhí)行

setInterval(函數(shù),時(shí)間) 時(shí)間單位ms相嵌,

語(yǔ)法:setInterval(function(){},1000); 隔一秒執(zhí)行函數(shù)一次

一般用于倒計(jì)時(shí)腿时,輪播圖

setTimeout(函數(shù),時(shí)間) 時(shí)間單位ms饭宾,

語(yǔ)法:setTimeout(function(){},1000); 延遲一秒執(zhí)行函數(shù)一次批糟,只會(huì)執(zhí)行一次

一般用于廣告,廣告彈出層

21看铆、js有哪些對(duì)象徽鼎?

原生對(duì)象:Object,F(xiàn)unction ,Array, String, Date, Boolean, Number,RegExp,Error

內(nèi)置對(duì)象:Global(全局 window,documet),Math

宿主對(duì)象:DOM BOM

全局對(duì)象:window

22、有這樣一個(gè)url:http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e,請(qǐng)寫(xiě)
一段js程序提取url中各個(gè)get參數(shù)(參數(shù)名和參數(shù)個(gè)數(shù)不確定)否淤,將其key-value
形式返回到一個(gè)json結(jié)構(gòu)中悄但,如{a:“1”,b:“2”,c:“”石抡,d:“xxx”檐嚣,e:undefined}

var str = "http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e";
var json = {}; //存儲(chǔ)
var arr = str.substring(str.indexOf("?")+1).split("&");//獲取汁雷?后面的净嘀,并且按&分割
for(var i = 0;i<arr.length;i++){
var a = arr[i].split("=");
json[a[0]] = a[1]||"";
}
console.log(json);

var json = {}; //存儲(chǔ)

var arr = str.substring(str.indexOf("?")+1).split("&");//獲取侠讯?后面的挖藏,并且按&分割

for(var i = 0;i

var a = arr[i].split("=");

json[a[0]] = a[1]||"";

}

console.log(json);</pre>

23、DOM怎樣添加厢漩、移除膜眠、移動(dòng)、復(fù)制溜嗜、創(chuàng)建和查找節(jié)點(diǎn)

獲取子節(jié)點(diǎn)

父節(jié)點(diǎn).children

父節(jié)點(diǎn).childNodes

獲取父節(jié)點(diǎn)

子節(jié)點(diǎn).parentNode

子節(jié)點(diǎn).offsetParent

創(chuàng)建

document.createElement(‘標(biāo)簽名’)

document.createTextNode(‘文本內(nèi)容’)

添加

父節(jié)點(diǎn).appendChild(子節(jié)點(diǎn))

父節(jié)點(diǎn).insertBefore(newChild宵膨,refChild)

復(fù)制

被復(fù)制的節(jié)點(diǎn).cloneNode(true)

刪除:

節(jié)點(diǎn).remove()

父節(jié)點(diǎn).removeChild(子節(jié)點(diǎn))

替換

父節(jié)點(diǎn).replaceChild(newChild,refChild)

24炸宵、new操作符具體干了什么呢?

(1)創(chuàng)建一個(gè)空對(duì)象辟躏,并且 this 變量引用該對(duì)象,同時(shí)還繼承了該函數(shù)的原型土全。

(2)屬性和方法被加入到 this 引用的對(duì)象中捎琐。

(3)新創(chuàng)建的對(duì)象由 this 所引用,并且最后隱式的返回 this 裹匙。

25瑞凑、JSON 的了解?

JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式概页。它是基于JavaScript的一個(gè)子集籽御。數(shù)據(jù)格式簡(jiǎn)單, 易于讀寫(xiě), 占用帶寬小。

格式:采用鍵值對(duì)惰匙,例如:{'age':'12', 'name':'back'}

26技掏、call() 和 apply() 的區(qū)別和作用?

apply()函數(shù)有兩個(gè)參數(shù):第一個(gè)參數(shù)是上下文项鬼,第二個(gè)參數(shù)是參數(shù)組成的數(shù)組零截。如果上下文是null,則使用全局對(duì)象代替秃臣。

如:function.apply(this,[1,2,3]);

call()的第一個(gè)參數(shù)是上下文涧衙,后續(xù)是實(shí)例傳入的參數(shù)序列哪工。

如:function.call(this,1,2,3);

27、哪些常見(jiàn)操作會(huì)造成內(nèi)存泄漏弧哎?

內(nèi)存泄漏指任何對(duì)象在您不再擁有或需要它之后仍然存在雁比。

垃圾回收器定期掃描對(duì)象,并計(jì)算引用了每個(gè)對(duì)象的其他對(duì)象的數(shù)量撤嫩。如果一個(gè)對(duì)象的引用數(shù)量為 0(沒(méi)有其他對(duì)象引用過(guò)該對(duì)象)偎捎,或?qū)υ搶?duì)象的惟一引用是循環(huán)的,那么該對(duì)象的內(nèi)存即可回收序攘。

setTimeout 的第一個(gè)參數(shù)使用字符串而非函數(shù)的話茴她,會(huì)引發(fā)內(nèi)存泄漏。

28程奠、如何解決跨域問(wèn)題

JSONP:
原理是:動(dòng)態(tài)插入script標(biāo)簽丈牢,通過(guò)script標(biāo)簽引入一個(gè)js文件,這個(gè)js文件載入成功后會(huì)執(zhí)行我們?cè)趗rl參數(shù)中指定的函數(shù)瞄沙,并且會(huì)把我們需要的json數(shù)據(jù)作為參數(shù)傳入己沛。
由于同源策略的限制,XmlHttpRequest只允許請(qǐng)求當(dāng)前源(域名距境、協(xié)議申尼、端口)的資源,為了實(shí)現(xiàn)跨域請(qǐng)求垫桂,可以通過(guò)script標(biāo)簽實(shí)現(xiàn)跨域請(qǐng)求师幕,然后在服務(wù)端輸出JSON數(shù)據(jù)并執(zhí)行回調(diào)函數(shù),從而解決了跨域的數(shù)據(jù)請(qǐng)求诬滩。
優(yōu)點(diǎn)是兼容性好霹粥,簡(jiǎn)單易用,支持瀏覽器與服務(wù)器雙向通信碱呼。缺點(diǎn)是只支持GET請(qǐng)求蒙挑。
JSONP:json+padding(內(nèi)填充)宗侦,顧名思義愚臀,就是把JSON填充到一個(gè)盒子里

<script>
function createJs(sUrl){
var oScript = document.createElement('script');
oScript.type = 'text/javascript';
oScript.src = sUrl;
document.getElementsByTagName('head')[0].appendChild(oScript);
}
createJs('jsonp.js');
box({
'name': 'test'
});
function box(json){
alert(json.name);
}
</script>

29、javascript垃圾回收方法

標(biāo)記清除(mark and sweep)

這是JavaScript最常見(jiàn)的垃圾回收方式矾利,當(dāng)變量進(jìn)入執(zhí)行環(huán)境的時(shí)候姑裂,比如函數(shù)中聲明一個(gè)變量,垃圾回收器將其標(biāo)記為“進(jìn)入環(huán)境”男旗,當(dāng)變量離開(kāi)環(huán)境的時(shí)候(函數(shù)執(zhí)行結(jié)束)將其標(biāo)記為“離開(kāi)環(huán)境”舶斧。

垃圾回收器會(huì)在運(yùn)行的時(shí)候給存儲(chǔ)在內(nèi)存中的所有變量加上標(biāo)記,然后去掉環(huán)境中的變量以及被環(huán)境中變量所引用的變量(閉包)察皇,在這些完成之后仍存在標(biāo)記的就是要?jiǎng)h除的變量了

引用計(jì)數(shù)(reference counting)

在低版本IE中經(jīng)常會(huì)出現(xiàn)內(nèi)存泄露茴厉,很多時(shí)候就是因?yàn)槠洳捎靡糜?jì)數(shù)方式進(jìn)行垃圾回收泽台。引用計(jì)數(shù)的策略是跟蹤記錄每個(gè)值被使用的次數(shù),當(dāng)聲明了一個(gè) 變量并將一個(gè)引用類(lèi)型賦值給該變量的時(shí)候這個(gè)值的引用次數(shù)就加1矾缓,如果該變量的值變成了另外一個(gè)怀酷,則這個(gè)值得引用次數(shù)減1,當(dāng)這個(gè)值的引用次數(shù)變?yōu)?的時(shí) 候嗜闻,說(shuō)明沒(méi)有變量在使用蜕依,這個(gè)值沒(méi)法被訪問(wèn)了,因此可以將其占用的空間回收琉雳,這樣垃圾回收器會(huì)在運(yùn)行的時(shí)候清理掉引用次數(shù)為0的值占用的空間样眠。

30、創(chuàng)建對(duì)象的方式翠肘?

1.字面量創(chuàng)建
var obj = {
name:"web",
eat:function(){}
}
缺點(diǎn):代碼冗余檐束,適合單個(gè)對(duì)象創(chuàng)建

2.實(shí)例創(chuàng)建
var obj = new Object();
obj.name = "web";
obj.eat = function(){}
缺點(diǎn):代碼冗余,適合單個(gè)對(duì)象創(chuàng)建

3.工廠模式創(chuàng)建
function createObj(name){
var obj = new Object();
obj.name = name;
obj.eat = function(){}
return obj
}
createObj(“web”);
缺點(diǎn):識(shí)別不明確

4.構(gòu)造函數(shù)創(chuàng)建
function Student(name){
//new Object
this.name = name;
this.eat = function(){}
}
new Student(name)
缺點(diǎn):浪費(fèi)內(nèi)存

5.原型創(chuàng)建
原型對(duì)象:prototype 锯茄,構(gòu)造函數(shù)中厢塘,共享的一塊區(qū)域
原型屬性:proto,實(shí)例對(duì)象中,指向原型對(duì)象
function Student(){}
Student.prototype.name = "web";
Student.prototype.eat = function(){}

new Student();
缺點(diǎn):不能傳參

6.混合創(chuàng)建肌幽,構(gòu)造函數(shù)(可變的)+原型(共享晚碾,不變的)
function Student(name){
this.name = name;
}
Student.prototype.eat = function(){

}

31、列舉IE 與其他瀏覽器不一樣的特性喂急?

(1)IE支持currentStyle格嘁,F(xiàn)Irefox使用getComputStyle

(2)IE 使用innerText,F(xiàn)irefox使用textContent

(3)濾鏡方面:IE:filter:alpha(opacity= num)廊移;Firefox:-moz-opacity:num

(4)事件方面:IE:attachEvent:火狐是addEventListener

(5)鼠標(biāo)位置:IE是event.clientX糕簿;火狐是event.pageX

(6)IE使用event.srcElement;Firefox使用event.target

(7)IE中消除list的原點(diǎn)僅需margin:0即可達(dá)到最終效果狡孔;FIrefox需要設(shè)置margin:0;padding:0以及l(fā)ist-style:none

(8)CSS圓角:ie7以下不支持圓角

32懂诗、怎么解決跨域問(wèn)題?

通過(guò)jsonp解決跨域苗膝,即通過(guò)script標(biāo)簽的src屬性引入一個(gè)js文件殃恒,通過(guò)回調(diào)函數(shù)將數(shù)據(jù)返回

$(“head”).append(‘

同理,如果你的頁(yè)面是utf-8的辱揭,引入的js是gbk的离唐,那么就需要加上charset="gbk".

33、javascript繼承的6種方法

(1)原型鏈繼承

(2)借用構(gòu)造函數(shù)繼承

(3)組合繼承(原型+借用構(gòu)造)

(4)原型式繼承

(5)寄生式繼承

(6)寄生組合式繼承

34问窃、創(chuàng)建ajax的過(guò)程

(1)創(chuàng)建XMLHttpRequest對(duì)象,也就是創(chuàng)建一個(gè)異步調(diào)用對(duì)象.

(2)創(chuàng)建一個(gè)新的HTTP請(qǐng)求,并指定該HTTP請(qǐng)求的方法亥鬓、URL及驗(yàn)證信息.

(3)設(shè)置響應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù).

(4)發(fā)送HTTP請(qǐng)求.

(5)獲取異步調(diào)用返回的數(shù)據(jù).

(6)使用JavaScript和DOM實(shí)現(xiàn)局部刷新.

35、ajax的缺點(diǎn)

(1)ajax不支持瀏覽器back按鈕域庇。

(2)安全問(wèn)題 AJAX暴露了與服務(wù)器交互的細(xì)節(jié)嵌戈。

(3)對(duì)搜索引擎的支持比較弱覆积。

(4)破壞了程序的異常機(jī)制。

(5)不容易調(diào)試熟呛。

40技健、說(shuō)說(shuō)嚴(yán)格模式的限制

嚴(yán)格模式主要有以下限制:

變量必須聲明后再使用

函數(shù)的參數(shù)不能有同名屬性,否則報(bào)錯(cuò)

不能使用with語(yǔ)句

不能對(duì)只讀屬性賦值惰拱,否則報(bào)錯(cuò)

不能刪除不可刪除的屬性雌贱,否則報(bào)錯(cuò)

禁止this指向全局對(duì)象

36、例舉強(qiáng)制類(lèi)型轉(zhuǎn)換和隱式類(lèi)型轉(zhuǎn)換?

強(qiáng)制(parseInt,parseFloat,number)

隱式(== – ===)

37偿短、數(shù)組方法pop() push() unshift() shift()

Push()尾部添加欣孤,pop()尾部刪除;Unshift()頭部添加昔逗,shift()頭部刪除

38降传、ajax請(qǐng)求的時(shí)候get 和post方式的區(qū)別

①一個(gè)在url后面,一個(gè)放在虛擬載體里面勾怒;

②有大小限制婆排;

③安全問(wèn)題;

39笔链、ajax請(qǐng)求時(shí)段只,如何解釋json數(shù)據(jù)

使用eval parse,鑒于安全性考慮鉴扫,使用parse更靠譜赞枕。

40、javascript的同源策略

一段腳本只能讀取來(lái)自于同一來(lái)源的窗口和文檔的屬性坪创,這里的同一來(lái)源指的是主機(jī)名炕婶、協(xié)議和端口號(hào)的組合

41、JavaScript原型莱预,原型鏈 柠掂?

js原型?

js每聲明一個(gè)function依沮,都有prototype原型涯贞,prototype原型是函數(shù)的一個(gè)默認(rèn)屬性,在函數(shù)的創(chuàng)建過(guò)程中由js編譯器自動(dòng)添加悉抵。

也就是說(shuō):當(dāng)生產(chǎn)一個(gè)function對(duì)象的時(shí)候肩狂,就有一個(gè)原型prototype摘完。

當(dāng)你定義一個(gè)函數(shù)對(duì)象的時(shí)候姥饰,其內(nèi)部就有這樣一個(gè)鏈表關(guān)系。實(shí)例化的對(duì)象孝治,自帶了proto的屬性列粪,而這個(gè)屬性指向了prototype审磁,從而實(shí)現(xiàn)對(duì)象的擴(kuò)展(例如繼承等操作)。

42岂座、Javascript作用鏈域?

JavaScript中所有的量都是存在于某一個(gè)作用域中的

除了全局作用域, 每一個(gè)作用域都是存在於某個(gè)作用域中的

在試圖訪問(wèn)一個(gè)變量時(shí)JS引擎會(huì)從當(dāng)前作用域開(kāi)始向上查找直到Global全局作用域停止

43态蒂、什么是閉包(closure),為什么要用它费什?

閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中變量的函數(shù)钾恢,創(chuàng)建閉包的最常見(jiàn)的方式就是在一個(gè)函數(shù)內(nèi)創(chuàng)建另一個(gè)函數(shù),通過(guò)另一個(gè)函數(shù)訪問(wèn)這個(gè)函數(shù)的局部變量,利用閉包可以突破作用鏈域鸳址,將函數(shù)內(nèi)部的變量和方法傳遞到外部瘩蚪。

閉包的特性:

(1)函數(shù)內(nèi)再嵌套函數(shù)

(2)內(nèi)部函數(shù)可以引用外層的參數(shù)和變量

(3)參數(shù)和變量不會(huì)被垃圾回收機(jī)制回收

44、documen.write和 innerHTML的區(qū)別?

write是DOM方法,向文檔寫(xiě)入HTML表達(dá)式或JavaScript代碼稿黍,可列出多個(gè)參數(shù)疹瘦,參數(shù)被順序添加到文檔中 ;innerHTML是DOM屬性,設(shè)置或返回調(diào)用元素開(kāi)始結(jié)束標(biāo)簽之間的HTML元素巡球。

45言沐、談一下Jquery中的bind(),live(),delegate(),on()的區(qū)別?

bind(type,[data],fn) 為每個(gè)匹配元素的特定事件綁定事件處理函數(shù)

$("a").bind("click",function(){alert("ok");});

live(type,[data],fn) 給所有匹配的元素附加一個(gè)事件處理函數(shù)酣栈,即使這個(gè)元素是以后再添加進(jìn)來(lái)的

$("a").live("click",function(){alert("ok");});

delegate(selector,[type],[data],fn) 指定的元素(屬于被選元素的子元素)添加一個(gè)或多個(gè)事件處理程序险胰,并規(guī)定當(dāng)這些事件發(fā)生時(shí)運(yùn)行的函數(shù)

$("#container").delegate("a","click",function(){alert("ok");})

on(events,[selector],[data],fn) 在選擇元素上綁定一個(gè)或多個(gè)事件的事件處理函數(shù)

差別:

.bind()是直接綁定在元素上

.live()則是通過(guò)冒泡的方式來(lái)綁定到元素上的。更適合列表類(lèi)型的矿筝,綁定到document DOM節(jié)點(diǎn)上鸯乃。和.bind()的優(yōu)勢(shì)是支持動(dòng)態(tài)數(shù)據(jù)。

.delegate()則是更精確的小范圍使用事件代理跋涣,性能優(yōu)于.live()

.on()則是最新的1.9版本整合了之前的三種方式的新事件綁定機(jī)制

46缨睡、你有用過(guò)哪些前端性能優(yōu)化的方法?

(1) 減少http請(qǐng)求次數(shù):CSS Sprites, JS陈辱、CSS源碼壓縮奖年、圖片大小控制合適;網(wǎng)頁(yè)Gzip沛贪,CDN托管陋守,data緩存 ,圖片服務(wù)器利赋。

(2) 前端模板 JS+數(shù)據(jù)水评,減少由于HTML標(biāo)簽導(dǎo)致的帶寬浪費(fèi),前端用變量保存AJAX請(qǐng)求結(jié)果媚送,每次操作本地變量中燥,不用請(qǐng)求,減少請(qǐng)求次數(shù)

(3) 用innerHTML代替DOM操作塘偎,減少DOM操作次數(shù)疗涉,優(yōu)化javascript性能拿霉。

(4) 當(dāng)需要設(shè)置的樣式很多時(shí)設(shè)置className而不是直接操作style。

(5) 少用全局變量咱扣、緩存DOM節(jié)點(diǎn)查找的結(jié)果绽淘。

(6) 圖片預(yù)加載,將樣式表放在頂部闹伪,將腳本放在底部 加上時(shí)間戳沪铭。

(7) 避免在頁(yè)面的主體布局中使用table,table要等其中的內(nèi)容完全下載之后才會(huì)顯示出來(lái)偏瓤,顯示比div+css布局慢峭拘。

47了罪、JS變量命名規(guī)則和規(guī)范

聲明變量:var

當(dāng)創(chuàng)建一個(gè)變量時(shí)會(huì)在內(nèi)存中的棧區(qū)開(kāi)辟一個(gè)新的空間

變量命名規(guī)則和規(guī)范:

規(guī)則:

1.由字母届垫、數(shù)字拇勃、下劃線、$符號(hào)組成已骇,不能以數(shù)字開(kāi)頭

2.不能是關(guān)鍵字和保留字离钝,例如:for,while,this,name

3.區(qū)分大小寫(xiě)

規(guī)范:

1.變量名必須有意義

2.遵守駝峰命名法

3.建議不要用$作為變量名

53、window.onload()和$(function(){});的區(qū)別

1褪储、window.onload必須等到頁(yè)面中所有元素加載完之后才會(huì)執(zhí)行(包括圖片卵渴、視頻等)而$(function(){});是在結(jié)構(gòu)繪制完畢之后執(zhí)行,二者的執(zhí)行時(shí)機(jī)是不同的鲤竹,一般來(lái)說(shuō)后者會(huì)首先執(zhí)行

2浪读、window.onload只能存在一個(gè),即時(shí)存在多個(gè)也只會(huì)執(zhí)行一個(gè)辛藻;而$(function(){})則可以存在多個(gè)碘橘,且多個(gè)都會(huì)執(zhí)行;

3吱肌、window.onload只有一種寫(xiě)法痘拆,而(function(){})可以寫(xiě)成:(document).ready(function(){});效果一樣。

484氮墨、js預(yù)解析?

在當(dāng)前作用域下,js運(yùn)行之前纺蛆,會(huì)把帶有var和function關(guān)鍵字的事先聲明,并在內(nèi)存中安排好规揪。然后再?gòu)纳系较聢?zhí)行js語(yǔ)句

49桥氏、js字符串常用方法

charAt(num) // 得到指定索引位置的單字符

charCodeAt(num) // 得到指定索引位置字符的Unicode值

indexOf("str") // 取str第一次出現(xiàn)的索引

replace( "oldStr" , "newStr" ) // 找到oldStr替換為newStr

slice( start , end ) // 其對(duì)象可以是字符串or數(shù)組 , 記得其范圍不包括end

substr( start , length ) // 從索引start開(kāi)始取length個(gè)字符 , length不可小于0否則返回空字符串

50、數(shù)組去重猛铅?

var arr = [1,1,2,3,4,2,2,2];

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

  for(var j=i+1;j<arr.length;j++){

    if(arr[i] == arr[j]){

      arr.splice(j,1);

      j--;

    }

  }

}

console.log(arr);

51字支、Table 對(duì)象集合有哪些?

cells[] 返回包含表格中所有單元格的一個(gè)數(shù)組。

語(yǔ)法:tableObject.cells[]

rows[] 返回包含表格中所有行的一個(gè)數(shù)組祥款。

rows 集合返回表格中所有行的一個(gè)數(shù)組。該集合包括 thead月杉、tfoot 和 tbody 中定義的所有行刃跛。

tBodies[] 返回包含表格中所有 tbody 的一個(gè)數(shù)組。

52苛萎、BOM對(duì)象里面的常用方法

close():關(guān)閉窗口

print():打印窗口

open([url],[name],[options]):打開(kāi)一個(gè)新窗口

window.setTimeout(“code”,1000);

53桨昙、BOM對(duì)象有哪些,列舉window對(duì)象腌歉?

1蛙酪、window對(duì)象 ,是JS的最頂層對(duì)象翘盖,其他的BOM對(duì)象都是window對(duì)象的屬性桂塞;

2、document對(duì)象馍驯,文檔對(duì)象阁危;

3、location對(duì)象汰瘫,瀏覽器當(dāng)前URL信息狂打;

4、navigator對(duì)象混弥,瀏覽器本身信息趴乡;

5、screen對(duì)象蝗拿,客戶端屏幕信息晾捏;

6、history對(duì)象哀托,瀏覽器訪問(wèn)歷史信息粟瞬;

54、 jQuery 庫(kù)中的 $() 是什么萤捆?

() 函數(shù)是 jQuery() 函數(shù)的別稱(chēng)裙品,乍一看這很怪異,還使 jQuery 代碼晦澀難懂俗或。一旦你適應(yīng)了市怎,你會(huì)愛(ài)上它的簡(jiǎn)潔。() 函數(shù)用于將任何對(duì)象包裹成 jQuery 對(duì)象辛慰,接著你就被允許調(diào)用定義在 jQuery 對(duì)象上的多個(gè)不同方法区匠。你甚至可以將一個(gè)選擇器字符串傳入 $() 函數(shù),它會(huì)返回一個(gè)包含所有匹配的 DOM 元素?cái)?shù)組的 jQuery 對(duì)象。這個(gè)問(wèn)題我已經(jīng)見(jiàn)過(guò)好幾次被提及驰弄,盡管它非陈樘基礎(chǔ),它經(jīng)常被用來(lái)區(qū)分一個(gè)開(kāi)發(fā)人員是否了解 jQuery戚篙。

55五鲫、$(this) 和 this 關(guān)鍵字在 jQuery 中有何不同?(答案如下)

這對(duì)于很多 jQuery 初學(xué)者來(lái)說(shuō)是一個(gè)棘手的問(wèn)題岔擂,其實(shí)是個(gè)簡(jiǎn)單的問(wèn)題位喂。(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)。

56颠区、JQuery有幾種選擇器?

(1)削锰、基本選擇器:#id,class,element,*;

(2)毕莱、層次選擇器:parent>child器贩,prev+next,prev~siblings

(3)朋截、基本過(guò)濾器選擇器::first蛹稍,:last,:not部服,:even唆姐,:odd,:eq廓八,:gt奉芦,:lt

(4)、內(nèi)容過(guò)濾器選擇器::contains剧蹂,:empty声功,:has,:parent

(5) 宠叼、可見(jiàn)性過(guò)濾器選擇器::hidden先巴,:visible

57、jQuery 有哪些好處?

jQuery 是輕量級(jí)的 javascript 框架

強(qiáng)大的選擇器

出色的 DOM 操作的封裝

可靠的事件處理機(jī)制

完善的 ajax 封裝

出色的瀏覽器的兼容性

支持鏈?zhǔn)讲僮魃祢牵[式迭代

支持豐富的插件

58摩渺、為什么要使用jquery?

因?yàn)閖Query是輕量級(jí)的框架剂邮,大小不到30kb,它有強(qiáng)大的選擇器摇幻,出色的DOM操作的封裝,有可靠的事件處理機(jī)制(jQuery在處理事件綁定的時(shí)候相當(dāng)?shù)目煽?抗斤,完善的ajax(它的ajax封裝的非常的好囚企,不需要考慮復(fù)雜瀏覽器的兼容性和XMLHttpRequest對(duì)象的創(chuàng)建和使用的問(wèn)題丈咐。) 出色的瀏覽器的兼容性瑞眼。 而且支持鏈?zhǔn)讲僮鳎[式迭代棵逊。行為層和結(jié)構(gòu)層的分離伤疙,還支持豐富的插件,jquery的文檔也非常的豐富辆影。

59徒像、jquery對(duì)象和dom對(duì)象是怎樣轉(zhuǎn)換的?

jquery轉(zhuǎn)DOM對(duì)象:jQuery 對(duì)象是一個(gè)數(shù)組對(duì)象蛙讥,可以通過(guò)[index]的豐富得到相應(yīng)的DOM對(duì)象還可以通過(guò)get[index]去得到相應(yīng)的DOM對(duì)象锯蛀。DOM對(duì)象轉(zhuǎn)jQuery對(duì)象:$(DOM對(duì)象)

60、如何使用jquery中的ajax的次慢?

如果是一些常規(guī)的ajax程序的話旁涤,使用load(),.get(),.post(),就可以搞定了,一般我會(huì)使用的是.post() 方法迫像。如果需要設(shè)定beforeSend(提交前回調(diào)函數(shù)),error(失敗后處理),success(成功后處理)及complete(請(qǐng)求完成后處理)回調(diào)函數(shù)等劈愚,這個(gè)時(shí)候我會(huì)使用.ajax()

61、在jquery中你是如何去操作樣式的闻妓?

addClass() 來(lái)追加樣式 菌羽,removeClass() 來(lái)刪除樣式,toggle() 來(lái)切換樣式

62由缆、jquery中的動(dòng)畫(huà)注祖,是怎樣用的?

hide() 和 show() 同時(shí)修改多個(gè)樣式屬性均唉。像高度氓轰,寬度,不透明度浸卦。 fadeIn() 和fadeOut() fadeTo() 只改變不透明度

slideUp() 和 slideDown() slideToggle() 只改變高度

animate() 屬于自定義動(dòng)畫(huà)的方法.

63署鸡、jquery中使用過(guò)哪些插入節(jié)點(diǎn)的方法,它們的區(qū)別是什么?

append(),appendTo(),prepend(),prependTo(),after(),insertAfter()靴庆,before(),insertBefore() 大致可以分為 內(nèi)部追加和外部追加append() 表式向每個(gè)元素內(nèi)部追加內(nèi)容时捌。appendTo()表示 講所有的元素追加到指定的元素中。例$(A)appendTo(B) 是將A追加到B中下面的方法解釋類(lèi)似炉抒。

64奢讨、js去除字符串空格(空白符)

使用js去除字符串內(nèi)所帶有空格,有以下三種方法:

( 1 ) replace正則匹配方法

去除字符串內(nèi)所有的空格:str = str.replace(/\s*/g,"");

去除字符串內(nèi)兩頭的空格:str = str.replace(/^\s|\s$/g,"");

去除字符串內(nèi)左側(cè)的空格:str = str.replace(/^\s*/,"");

去除字符串內(nèi)右側(cè)的空格:str = str.replace(/(\s*$)/g,"");

( 2 ) str.trim()方法

trim()方法是用來(lái)刪除字符串兩端的空白字符并返回焰薄,trim方法并不影響原來(lái)的字符串本身拿诸,它返回的是一個(gè)新的字符串。

缺陷:只能去除字符串兩端的空格塞茅,不能去除中間的空格

65亩码、什么是window對(duì)象? 什么是document對(duì)象?

window是js中最大的對(duì)象,表示窗口野瘦,包含document

document文檔對(duì)象描沟,表示HTML

66、offsetWidth鞭光、clientWidth吏廉、scrollTop的區(qū)別?

offsetWidth:占位寬惰许,包含 內(nèi)容寬+左右padding+左右border

clientWidth:可視寬席覆,包含 內(nèi)容寬+左右padding

scrollTop:頁(yè)面被卷去的高

67、如何獲取url地址中搜索內(nèi)容汹买?

window.location.search

68佩伤、事件、IE與火狐的事件機(jī)制有什么區(qū)別卦睹?

IE的事件流是冒泡流畦戒,而火狐同時(shí)支持冒泡流和捕獲流。

69结序、如何阻止冒泡障斋?

ev.stopPropagation?ev.stopPropagation():ev.cancelBubble = true;

70、事件綁定和普通事件有什么區(qū)別徐鹤。

標(biāo)簽.事件:如果給同一個(gè)元素添加同一個(gè)事件垃环,后面的會(huì)覆蓋前面

事件綁定:可以給同一個(gè)元素添加同一個(gè)事件,不會(huì)被覆蓋

71返敬、如何用原生js給元素綁定兩個(gè)click事件遂庄?

oDiv.addEventListener('click',fun1);

oDiv.addEventListener('click',fun2);

72、解釋一下事件流劲赠?

事件捕獲階段:當(dāng)事件發(fā)生的時(shí)候涛目,將事件從window依次往子元素傳遞

確定目標(biāo)階段:確定事件目標(biāo)

事件冒泡階段:事件目標(biāo)開(kāi)始處理事件秸谢,處理完以后會(huì)將事件依次傳遞給父元素,一直到window

事件都是在事件冒泡處理,ie只有冒泡

73霹肝、事件委托是什么估蹄。

將所有的操作交給父元素,將事件添加給父元素沫换,父元素接收到這個(gè)事件的發(fā)生臭蚁,找到具體觸發(fā)事件的子元素,讓子元素處理事件

oUl.onclick = function (ev) {

var ev = window.event || ev;

var target = ev.target || ev.srcElement;//ev.srcElement:ie獲取事件目標(biāo)

target.style.background = "orange";

}

74讯赏、給10000個(gè)li添加點(diǎn)擊事件垮兑。

oUl.onclick = function (ev) {

var ev = window.event || ev;

var target = ev.target || ev.srcElement;//ev.srcElement:ie獲取事件目標(biāo)

target.style.background = "orange";

}

75、阻止默認(rèn)行為的三種方式漱挎。

元素.事件添加的事件:retrun false 阻止

元素.addEventListener:ev.preventDefault(); 阻止

元素.attachEvent:ev.retrunValue = false 阻止

76系枪、拖拽效果中有幾種事件?

按下onmousedown识樱,拖拽onmousemove嗤无,彈起onmouseup

77震束、什么是回調(diào)函數(shù)怜庸?

回調(diào)函數(shù)是某個(gè)操作某個(gè)動(dòng)作做完以后調(diào)用的函數(shù)

78、使用正則表達(dá)式驗(yàn)證郵箱垢村。

^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/

79割疾、cookie的利弊?

優(yōu)點(diǎn):極高的擴(kuò)展性和可用性

1.通過(guò)良好的編程嘉栓,控制保存在cookie中的session對(duì)象的大小宏榕。

2.通過(guò)加密和安全傳輸技術(shù)(SSL),減少cookie被破解的可能性侵佃。

3.只在cookie中存放不敏感數(shù)據(jù)麻昼,即使被盜也不會(huì)有重大損失。

4.控制cookie的生命期馋辈,使之不會(huì)永遠(yuǎn)有效抚芦。偷盜者很可能拿到一個(gè)過(guò)期的cookie。

缺點(diǎn):

1.Cookie數(shù)量和長(zhǎng)度的限制迈螟。每個(gè)domain最多只能有20條cookie叉抡,每個(gè)cookie長(zhǎng)度不能超過(guò)4KB,否則會(huì)被截掉答毫。

2.安全性問(wèn)題褥民。如果cookie被人攔截了,那人就可以取得所有的session信息洗搂。即使加密也與事無(wú)補(bǔ)消返,因?yàn)閿r截者并不需要知道cookie的意義载弄,他只要原樣轉(zhuǎn)發(fā)cookie就可以達(dá)到目的了。

3.有些狀態(tài)不可能保存在客戶端撵颊。例如侦锯,為了防止重復(fù)提交表單,我們需要在服務(wù)器端保存一個(gè)計(jì)數(shù)器秦驯。如果我們把這個(gè)計(jì)數(shù)器保存在客戶端尺碰,那么它起不到任何作用。

因?yàn)檫@些弊端(主要是cookie的大小和多少都受限制译隘,并且每次你請(qǐng)求一個(gè)新的頁(yè)面的時(shí)候Cookie都會(huì)被發(fā)送過(guò)去亲桥,這樣無(wú)形中浪費(fèi)了帶寬,另外cookie還需要指定作用域固耘,不可以跨域調(diào)用)题篷,IE8以后,就出現(xiàn)一個(gè)web storage厅目;它僅僅是為了本地緩存數(shù)據(jù)而存在番枚;但是Cookie也是不可以或缺的:Cookie的作用是與服務(wù)器進(jìn)行交互,作為HTTP規(guī)范的一部分而存在损敷。

80葫笼、JavaScript原型,原型鏈 拗馒?

js每聲明一個(gè)function路星,都有prototype原型,prototype原型是函數(shù)的一個(gè)默認(rèn)屬性诱桂,在函數(shù)的創(chuàng)建過(guò)程中由js編譯器自動(dòng)添加洋丐。

也就是說(shuō):當(dāng)生產(chǎn)一個(gè)function對(duì)象的時(shí)候,就有一個(gè)原型prototype挥等。原型中存儲(chǔ)對(duì)象共享的屬性和方法友绝。

原型鏈:

當(dāng)你定義一個(gè)函數(shù)對(duì)象的時(shí)候,其內(nèi)部就有這樣一個(gè)鏈表關(guān)系肝劲。聲明foo對(duì)象迁客,自帶了proto的屬性,而這個(gè)屬性指向了prototype涡相,從而實(shí)現(xiàn)對(duì)象的擴(kuò)展(例如繼承等操作)

81哲泊、什么是閉包,閉包有什么作用催蝗,說(shuō)說(shuō)你對(duì)閉包的理解切威。

閉包:就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)(函數(shù)里面套函數(shù),內(nèi)部函數(shù)訪問(wèn)外部函數(shù)變量)丙号,

在本質(zhì)上先朦,閉包是將函數(shù)內(nèi)部和函數(shù)外部連接起來(lái)的橋梁缰冤。

作用:閉包中使用的變

量會(huì)一直存儲(chǔ)在內(nèi)存中,類(lèi)似全局變量 喳魏,避免全局污染棉浸,可以解決全局變量的問(wèn)題。

82刺彩、ajax請(qǐng)求的時(shí)候get 和post方式的區(qū)別迷郑,什么時(shí)候用post。

1创倔、GET請(qǐng)求會(huì)將參數(shù)跟在URL后進(jìn)行傳遞嗡害,而POST請(qǐng)求則是作為HTTP消息的實(shí)體內(nèi)容發(fā)送給WEB服務(wù)器。當(dāng)然在Ajax請(qǐng)求中畦攘,這種區(qū)別對(duì)用戶是不可見(jiàn)的

2霸妹、GEt傳輸數(shù)據(jù)容量小,不安全知押,post傳輸數(shù)據(jù)內(nèi)容大叹螟,更加安全;

當(dāng)向服務(wù)器發(fā)送一些數(shù)據(jù)的時(shí)候選擇post比較安全

83台盯、ajax請(qǐng)求時(shí)罢绽,如何解釋json數(shù)據(jù)。

如果是字符串形式的json:eval("("+ajax.response+")")

如果是本地的json文件:JSON.parse(data)

84爷恳、同步和異步的區(qū)別?

異步:客戶端與服務(wù)器請(qǐng)求數(shù)據(jù)的過(guò)程中有缆,可以做其他的事情

同步:客戶端與服務(wù)器請(qǐng)求數(shù)據(jù)的過(guò)程中象踊,不能做其他的事情

85温亲、常見(jiàn)的http狀態(tài)碼?

不需要知道全部杯矩,常見(jiàn)的就可以栈虚,比如200 404 503

200狀態(tài)碼:表示請(qǐng)求已成功,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回

201狀態(tài)碼:表示請(qǐng)求成功并且服務(wù)器創(chuàng)建了新的資源史隆,且其 URI 已經(jīng)隨Location 頭信息返回魂务。假如需要的資源無(wú)法及時(shí)建立的話,應(yīng)當(dāng)返回 '202 Accepted'

202狀態(tài)碼:服務(wù)器已接受請(qǐng)求泌射,但尚未處理

301狀態(tài)碼:被請(qǐng)求的資源已永久移動(dòng)到新位置粘姜。服務(wù)器返回此響應(yīng)(對(duì) GET 或 HEAD 請(qǐng)求的響應(yīng))時(shí),會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到新位置熔酷。

302狀態(tài)碼:請(qǐng)求的資源臨時(shí)從不同的URI響應(yīng)請(qǐng)求孤紧,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來(lái)進(jìn)行以后的請(qǐng)求

304自從上次請(qǐng)求后,請(qǐng)求的網(wǎng)頁(yè)未修改過(guò)拒秘。服務(wù)器返回此響應(yīng)時(shí)号显,不會(huì)返回網(wǎng)頁(yè)內(nèi)容臭猜。 如果網(wǎng)頁(yè)自請(qǐng)求者上次請(qǐng)求后再也沒(méi)有更改過(guò),您應(yīng)將服務(wù)器配置為返回此響應(yīng)(稱(chēng)為 If-Modified-Since HTTP 標(biāo)頭)押蚤。

301狀態(tài)碼:被請(qǐng)求的資源已永久移動(dòng)到新位置蔑歌。服務(wù)器返回此響應(yīng)(對(duì) GET 或 HEAD 請(qǐng)求的響應(yīng))時(shí),會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到新位置揽碘。

302狀態(tài)碼:請(qǐng)求的資源臨時(shí)從不同的URI響應(yīng)請(qǐng)求次屠,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來(lái)進(jìn)行以后的請(qǐng)求

304自從上次請(qǐng)求后,請(qǐng)求的網(wǎng)頁(yè)未修改過(guò)雳刺。服務(wù)器返回此響應(yīng)時(shí)帅矗,不會(huì)返回網(wǎng)頁(yè)內(nèi)容。 如果網(wǎng)頁(yè)自請(qǐng)求者上次請(qǐng)求后再也沒(méi)有更改過(guò)煞烫,您應(yīng)將服務(wù)器配置為返回此響應(yīng)(稱(chēng)為 If-Modified-Since HTTP 標(biāo)頭)浑此。

401狀態(tài)碼:請(qǐng)求要求身份驗(yàn)證。 對(duì)于需要登錄的網(wǎng)頁(yè)滞详,服務(wù)器可能返回此響應(yīng)凛俱。

403狀態(tài)碼:服務(wù)器已經(jīng)理解請(qǐng)求,但是拒絕執(zhí)行它料饥。與401響應(yīng)不同的是蒲犬,身份驗(yàn)證并不能提供任何幫助,而且這個(gè)請(qǐng)求也不應(yīng)該被重復(fù)提交岸啡。

404狀態(tài)碼:請(qǐng)求失敗原叮,請(qǐng)求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)。沒(méi)有信息能夠告訴用戶這個(gè)狀況到底是暫時(shí)的還是永久的巡蘸。假如服務(wù)器知道情況的話奋隶,應(yīng)當(dāng)使用410狀態(tài)碼來(lái)告知舊資源因?yàn)槟承﹥?nèi)部的配置機(jī)制問(wèn)題,已經(jīng)永久的不可用悦荒,而且沒(méi)有任何可以跳轉(zhuǎn)的地址唯欣。404這個(gè)狀態(tài)碼被廣泛應(yīng)用于當(dāng)服務(wù)器不想揭示到底為何請(qǐng)求被拒絕或者沒(méi)有其他適合的響應(yīng)可用的情況下。

500狀態(tài)碼:服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況搬味,導(dǎo)致了它無(wú)法完成對(duì)請(qǐng)求的處理境氢。一般來(lái)說(shuō),這個(gè)問(wèn)題都會(huì)在服務(wù)器的程序碼出錯(cuò)時(shí)出現(xiàn)碰纬。

503狀態(tài)碼:由于臨時(shí)的服務(wù)器維護(hù)或者過(guò)載萍聊,服務(wù)器當(dāng)前無(wú)法處理請(qǐng)求。通常悦析,這個(gè)是暫時(shí)狀態(tài)寿桨,一段時(shí)間會(huì)恢復(fù)

86、eval的作用是她按?

eval:計(jì)算某個(gè)字符串牛隅,并且執(zhí)行其中的JavaScript代碼

console.log(eval("2+3")); //5

console.log(res); //'["img/1.jpg","img/2.jpg","img/3.jpg","img/4.jpg"]'

console.log(eval(res)); //(4) ["img/1.jpg", "img/2.jpg", "img/3.jpg", "img/4.jpg"]

87炕柔、js哪些操作會(huì)造成內(nèi)存泄露?

1)意外的全局變量引起的內(nèi)存泄露

function leak(){

leak="xxx";//leak成為一個(gè)全局變量媒佣,不會(huì)被回收

}

2)被遺忘的定時(shí)器或者回調(diào)

3)閉包引起的內(nèi)存泄漏

88匕累、$(document).ready() 方法和window.onload 有什么區(qū)別?

1.執(zhí)行時(shí)間不同

window.onload必須等到頁(yè)面內(nèi)包括圖片的所有元素加載完畢后才能執(zhí)行默伍。

$(document).ready()是DOM結(jié)構(gòu)繪制完畢后就執(zhí)行欢嘿,不必等到加載完畢。

2.編寫(xiě)個(gè)數(shù)不同

window.onload不能同時(shí)編寫(xiě)多個(gè)也糊,如果有多個(gè)window.onload方法炼蹦,只會(huì)執(zhí)行一個(gè)

$(document).ready()可以同時(shí)編寫(xiě)多個(gè),并且都可以得到執(zhí)行

3.簡(jiǎn)化寫(xiě)法不同

window.onload沒(méi)有簡(jiǎn)化寫(xiě)法

(document).ready(function(){})可以簡(jiǎn)寫(xiě)成(function(){});

89狸剃、jQuery 的屬性拷貝(extend)的實(shí)現(xiàn)原理是什么掐隐,如何實(shí)現(xiàn)深拷貝?

在默認(rèn)情況下钞馁,通過(guò)$.extend()合并操作不是遞歸的(淺拷貝);如果第一個(gè)對(duì)象的屬性本身是一個(gè)對(duì)象或數(shù)組虑省,那么它將完全用第二個(gè)對(duì)象相同的key重寫(xiě)一個(gè)屬性。這些值不會(huì)被合并僧凰。然而探颈,如果將 true 作為該函數(shù)的第一個(gè)參數(shù),那么會(huì)在對(duì)象上進(jìn)行遞歸的合并(深拷貝)训措。

淺拷貝(false 默認(rèn)):如果第二個(gè)參數(shù)對(duì)象有的屬性第一個(gè)參數(shù)對(duì)象也有伪节,那么不會(huì)進(jìn)行相同參數(shù)內(nèi)部的比較,直接將第一個(gè)對(duì)象的相同參數(shù)覆蓋绩鸣。

深拷貝(true):如果第二個(gè)參數(shù)對(duì)象有的屬性第一個(gè)參數(shù)對(duì)象也有怀大,還要繼續(xù)在這個(gè)相同的參數(shù)向下一層找,比較相同參數(shù)的對(duì)象中是否還有不一樣的屬性全闷,如果有叉寂,將其繼承到第一個(gè)對(duì)象,如果沒(méi)有总珠,則覆蓋。

90勘纯、().attr與().prop()的區(qū)別?

對(duì)于HTML元素本身就帶有的固有屬性局服,在處理時(shí),使用prop方法驳遵。

對(duì)于HTML元素我們自己自定義的DOM屬性淫奔,在處理時(shí),使用attr方法堤结。

$("#chk1").prop("checked") == false

$("#chk2").prop("checked") == true

如果上面使用attr方法唆迁,則會(huì)出現(xiàn):

$("#chk1").attr("checked") == undefined

91鸭丛、jquery中.get()提交和.post()提交有區(qū)別嗎?

get一般用來(lái)進(jìn)行查詢(xún)操作唐责,url地址有長(zhǎng)度限制鳞溉,請(qǐng)求的參數(shù)都暴露在url地址當(dāng)中,如果傳遞中文參數(shù)鼠哥,需要自己進(jìn)行編碼操作熟菲,安全性較低。

post請(qǐng)求方式主要用來(lái)提交數(shù)據(jù)朴恳,沒(méi)有數(shù)據(jù)長(zhǎng)度的限制抄罕,提交的數(shù)據(jù)內(nèi)容存在于http請(qǐng)求體中,數(shù)據(jù)不會(huì)暴漏在url地址中于颖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呆贿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子森渐,更是在濱河造成了極大的恐慌榨崩,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件章母,死亡現(xiàn)場(chǎng)離奇詭異母蛛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)乳怎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)彩郊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蚪缀,你說(shuō)我怎么就攤上這事秫逝。” “怎么了询枚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵违帆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我金蜀,道長(zhǎng)刷后,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任渊抄,我火速辦了婚禮尝胆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘护桦。我一直安慰自己含衔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著贪染,像睡著了一般缓呛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杭隙,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天哟绊,我揣著相機(jī)與錄音,去河邊找鬼寺渗。 笑死匿情,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的信殊。 我是一名探鬼主播炬称,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼涡拘!你這毒婦竟也來(lái)了玲躯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鳄乏,失蹤者是張志新(化名)和其女友劉穎跷车,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體橱野,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朽缴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了水援。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片密强。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜗元,靈堂內(nèi)的尸體忽然破棺而出或渤,到底是詐尸還是另有隱情,我是刑警寧澤奕扣,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布薪鹦,位于F島的核電站,受9級(jí)特大地震影響惯豆,放射性物質(zhì)發(fā)生泄漏池磁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一循帐、第九天 我趴在偏房一處隱蔽的房頂上張望框仔。 院中可真熱鬧,春花似錦拄养、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)跛梗。三九已至,卻和暖如春棋弥,著一層夾襖步出監(jiān)牢的瞬間核偿,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工顽染, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漾岳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓粉寞,卻偏偏與公主長(zhǎng)得像尼荆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子唧垦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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

  • 1.幾種基本數(shù)據(jù)類(lèi)型?復(fù)雜數(shù)據(jù)類(lèi)型?值類(lèi)型和引用數(shù)據(jù)類(lèi)型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類(lèi)型:Undefined捅儒、Nul...
    伯納烏的追風(fēng)少年閱讀 25,805評(píng)論 2 46
  • 1.幾種基本數(shù)據(jù)類(lèi)型?復(fù)雜數(shù)據(jù)類(lèi)型?值類(lèi)型和引用數(shù)據(jù)類(lèi)型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類(lèi)型:Undefined、Nul...
    極樂(lè)君閱讀 5,514評(píng)論 0 106
  • Doctype作用? 嚴(yán)格模式與混雜模式如何區(qū)分振亮?它們有何意義? 聲明位于文檔中的最前面巧还,處于 標(biāo)簽之前。告知瀏覽...
    空城皆是舊夢(mèng)閱讀 633評(píng)論 0 3
  • 1.行內(nèi)元素和塊級(jí)元素?img算什么?行內(nèi)元素怎么轉(zhuǎn)化為塊級(jí)元素? 行內(nèi)元素:和有他元素都在一行上坊秸,高度麸祷、行高及外...
    極樂(lè)君閱讀 2,416評(píng)論 0 20
  • HTTP HTTP狀態(tài)碼知道哪些?200 請(qǐng)求已成功褒搔,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回阶牍。400 請(qǐng)求參...
    小夫特閱讀 437評(píng)論 0 0