国产高清网站_亚洲一区二区综合_成人久久18免费网站_国产成人久久精品激情

您現(xiàn)在所在的位置:首頁 >學員就業(yè) > 就業(yè)寶典 > 前端經(jīng)典面試題之JavaScript篇

前端經(jīng)典面試題之JavaScript篇

來源:奇酷教育 發(fā)表于:

1 JavaScript基礎數(shù)據(jù)類型JavaScript數(shù)據(jù)類型包括原始類型和引用類型,原始類型有五個:Number(數(shù)值) String(字符串) Boolean(布爾

1 JavaScript基礎數(shù)據(jù)類型

JavaScript數(shù)據(jù)類型包括原始類型和引用類型,原始類型有五個:

Number(數(shù)值) String(字符串) Boolean(布爾) Null(空) Undefined(未定義)

引用類型有一個:

Object(對象)

通過typeof(x)可以返回一個變量x的數(shù)據(jù)類型“number”、“string”、“boolean”、“undefined”、”object”,這里要注意一點:typeof運算符對于null類型返回的是object。

^ 《JavaScript高級程序設計》: 
這實際上是JavaScript最初實現(xiàn)中的一個錯誤,后來被ECMAScript沿用了。現(xiàn)在null被認為是對象的占位符,從而解釋了這一矛盾。但是從技術上來說,它仍然是原始值。

2 談一談JavaScript作用域鏈

當執(zhí)行一段JavaScript代碼(全局代碼或函數(shù))時,JavaScript引擎會創(chuàng)建為其創(chuàng)建一個作用域又稱為執(zhí)行上下文(Execution Context),在頁面加載后會首先創(chuàng)建一個全局的作用域,然后每執(zhí)行一個函數(shù),會建立一個對應的作用域,從而形成了一條作用域鏈。每個作用域都有一條 對應的作用域鏈,鏈頭是全局作用域,鏈尾是當前函數(shù)作用域。

作用域鏈的作用是用于解析標識符,當函數(shù)被創(chuàng)建時(不是執(zhí)行),會將this、arguments、命名參數(shù)和該函數(shù)中的所有局部變量添加到該當前作用域 中,當JavaScript需要查找變量X的時候(這個過程稱為變量解析),它首先會從作用域鏈中的鏈尾也就是當前作用域進行查找是否有X屬性,如果沒有 找到就順著作用域鏈繼續(xù)查找,直到查找到鏈頭,也就是全局作用域鏈,仍未找到該變量的話,就認為這段代碼的作用域鏈上不存在x變量,并拋出一個引用錯誤 (ReferenceError)的異常。

3 如何理解JavaScript原型鏈

JavaScript中的每個對象都有一個prototype屬性,我們稱之為原型,而原型的值也是一個對象,因此它也有自己的原型,這樣就串聯(lián)起來了一條原型鏈,原型鏈的鏈頭是object,它的prototype比較特殊,值為null。

原型鏈的作用是用于對象繼承,函數(shù)A的原型屬性(prototype property)是一個對象,當這個函數(shù)被用作構造函數(shù)來創(chuàng)建實例時,該函數(shù)的原型屬性將被作為原型賦值給所有對象實例,比如我們新建一個數(shù)組,數(shù)組的方法便從數(shù)組的原型上繼承而來。

當訪問對象的一個屬性時, 首先查找對象本身, 找到則返回; 若未找到, 則繼續(xù)查找其原型對象的屬性(如果還找不到實際上還會沿著原型鏈向上查找, 直至到根). 只要沒有被覆蓋的話, 對象原型的屬性就能在所有的實例中找到,若整個原型鏈未找到則返回undefined;

4 JavaScript變量聲明提前

《JavaScript權威指南》中是這樣解釋的:JavaScript變量在聲明之前已經(jīng)可用,JavaScript的這個特性被非正式的稱為聲明提前(hoisting),即JavaScript函數(shù)中聲明的所有變量(但不涉及賦值)都被“提前”至函數(shù)的頂部。

從一個例子來看:

var scope = "global";

function myFunc(){

   console.log(scope);

   var scope = "local";

}

控制臺打印出來的不是“global”而是“undefined”,這是因為在myFunc這個函數(shù)的作用域中,局部變量scope聲明被提前至函數(shù)頂部,而此時,scope僅聲明,未賦值,因此輸出undefined。實際上,上面的代碼和下面的效果是一樣的:

var scope = "global";

function myFunc(){

   var scope;

   console.log(scope);

   scope = "local";

}

5 如何理解和應用JavaScript閉包

關于閉包具體的定義文獻中給的概念很抽象,我認為閉包是一種使函數(shù)能夠都去其它函數(shù)的局部變量的語法機制。

舉個例子:

function outFunc(){

   var name = "Vicfeel";

   function inFunc(){

       console.log(name);

   }

   return inFunc;

}

inFunc(); //控制臺顯示"Vicfeel"

這這個例子我們可以看出,在函數(shù)inFunc中依然可以訪問outFunc的局部變量name。

閉包應用舉例,模擬類的私有屬性,利用閉包的性質(zhì),局部變量只有在sayAge方法中才可以訪問,而name在外部也訪問,從而實現(xiàn)了類的私有屬性。

function User(){

   this.name = "Vicfeel";  //共有屬性

   var age = 23;    //私有屬性

   this.sayAge:function(){

       console.log("my age is " + age);

   }

}

var user = new User();

console.log(user.name); //"Vicfeel"

console.log(user.age);  //"undefined"

user.sayAge();   //"my age is 23"


6 new構建對象的本質(zhì)

function User(){

   this.name = "Vicfeel";

   this.age = 23;

}

 

var user = new User();

通過new操作符,實際上在構造函數(shù)User中完成了如下操作:

創(chuàng)建一個新的對象,這個對象的類型是object; 
設置這個新的對象的內(nèi)部、可訪問性和prototype屬性為構造函數(shù)(指prototype.construtor所指向的構造函數(shù))中設置的; 
執(zhí)行構造函數(shù); 
返回新創(chuàng)建的對象。

function User(){

   //this = {};  

   //this.constructor = User;

   this.name = "Vicfeel";

   this.age = 23;

   //return this;

}

 

var user = new User();

如果構造函數(shù)默認返回的新創(chuàng)建的this對象,如果手動return 一個變量的話,如果該變量是原始類型則無效,如果是對象,則返回該對象。

7 JavaScript代理

當我們需要對很多元素添加事件的時候,可以通過將事件添加到它們的父節(jié)點而將事件委托給父節(jié)點來觸發(fā)處理函數(shù)。

比如我們需要向一個ul中動態(tài)添加很多個li,需要遍歷li逐個添加點擊事件

<ul id='list'></ul>

var count = 100;

var ulList = document.getElementById("list");

//動態(tài)構建節(jié)點

for(var i = count;i--;){

   var liDom = document.createElement('li');

   ulList.appendChild(liDom);

}

//綁定點擊事件

var liNode = ulList.getElementByTagName("li");

for(var i=0, l = liNodes.length; i < l; i++){

   liNode[i].onClick = function(){

       //li點擊事件

   }

}

眾 所周知,DOM操作是十分消耗性能的。所以重復的事件綁定簡直是性能殺手。而事件代理的核心思想,就是通過盡量少的綁定,去監(jiān)聽盡量多的事件。如何做呢? 答案是利用事件冒泡機制,對其父節(jié)點ul進行事件綁定(Event Bubble),然后通過event.target來判斷是哪個節(jié)點觸發(fā)的事件,從而減少很多EventHandler的綁定。

var count = 100;

var ulList = document.getElementById("list");

//動態(tài)構建節(jié)點

for(var i = count;i--;){

   var liDom = document.createElement('li');

   ulList.appendChild(liDom);

}

//綁定點擊事件

var liNode = ulList.getElementByTagName("li");

liNode.onClick = function(e){

   if(e.target && e.target.nodeName.toUpperCase == "LI") {

       // li點擊事件

   }

}

国产高清网站_亚洲一区二区综合_成人久久18免费网站_国产成人久久精品激情

    <sup id="ys8cw"><kbd id="ys8cw"></kbd></sup>

    <sup id="ys8cw"><font id="ys8cw"><output id="ys8cw"></output></font></sup>

    成人免费的视频| 91福利在线播放| 国产日产欧美一区二区三区| 在线播放视频一区| 国产综合色产在线精品| 秋霞成人午夜伦在线观看| 亚洲h动漫在线| wwwwww.欧美系列| 7799精品视频| 成人久久18免费网站麻豆| 亚洲专区一二三| 久久综合久久综合亚洲| 日韩欧美国产综合| 欧美成人午夜电影| 91久久精品一区二区| 91视频xxxx| 国产在线一区观看| 狠狠色丁香久久婷婷综合_中| 久久黄色级2电影| 国产在线精品一区二区三区不卡| 精品一区二区三区不卡| 亚洲免费在线看| 亚洲综合色自拍一区| 亚洲高清三级视频| 天堂一区二区在线免费观看| 免费一区二区视频| 一区二区在线看| 亚洲一二三区不卡| 亚洲欧洲在线观看av| 最新日韩在线视频| 亚洲国产精品久久久久婷婷884 | 亚洲已满18点击进入久久| 精品噜噜噜噜久久久久久久久试看 | 色综合视频一区二区三区高清| fc2成人免费人成在线观看播放 | 高清不卡一区二区| 天堂精品中文字幕在线| 蜜桃av一区二区三区| 亚洲成人动漫一区| 中文字幕一区免费在线观看| 精品精品欲导航| 欧美日本在线视频| 91久久精品日日躁夜夜躁欧美| 欧美三级在线播放| 久久综合狠狠综合久久激情| 欧美一区二区日韩| 欧美日韩一区 二区 三区 久久精品| 高清国产午夜精品久久久久久| 美女一区二区三区| 成人激情av网| 欧美剧情片在线观看| 欧美在线视频不卡| 欧美va在线播放| 欧美一二三区在线观看| 欧美日韩国产免费一区二区| 一本色道久久综合精品竹菊| 4438x亚洲最大成人网| 欧美日韩国产另类一区| 91黄色在线观看| 久久综合久久99| 一级中文字幕一区二区| 国产在线日韩欧美| 欧美日韩精品一区二区三区四区| 欧美亚洲国产一卡| 欧美亚洲一区二区在线观看| 91丝袜国产在线播放| 精品理论电影在线观看| 一区二区三区四区在线免费观看| 一区二区三区在线免费| 亚洲午夜久久久久久久久电影网| 一区二区三区精品视频| 国产一区二区三区免费在线观看 | 日韩一区欧美一区| 综合婷婷亚洲小说| 亚洲女人****多毛耸耸8| 九九九精品视频| 国产成人亚洲综合a∨婷婷| 欧美亚洲高清一区二区三区不卡| 精品少妇一区二区三区视频免付费 | 国产午夜精品久久| 日韩经典一区二区| 亚洲九九爱视频| 国产精品一二三四五| 日韩一区二区在线看| 亚洲影院久久精品| 91丨国产丨九色丨pron| 91福利在线播放| 精品视频在线免费| 中文字幕在线视频一区| 国产成人午夜精品影院观看视频| 波多野洁衣一区| 亚洲精品一区二区三区四区高清| 日韩精品视频网| 狠狠色狠狠色综合系列| 欧美一级夜夜爽| 亚洲成人动漫精品| 国产精一区二区三区| 国产久卡久卡久卡久卡视频精品| 欧美一区三区二区| 视频一区二区三区中文字幕| 九九精品一区二区| 日韩精品中文字幕在线不卡尤物| 日韩成人午夜电影| 91 com成人网| 日韩专区在线视频| 成人久久18免费网站麻豆| 久久看人人爽人人| 亚洲无线码一区二区三区| 色哟哟一区二区| 一区二区三区欧美久久| 国产在线精品视频| 久久精品一区二区三区四区| 国内欧美视频一区二区| 337p日本欧洲亚洲大胆精品| 国产一区二区三区精品欧美日韩一区二区三区| 99久久er热在这里只有精品66| 制服丝袜成人动漫| 美女视频黄 久久| 色呦呦日韩精品| 亚洲一二三四久久| 欧美肥妇free| 亚洲欧美日韩在线不卡| 91碰在线视频| 久久精品日韩一区二区三区| 国产成人自拍在线| 亚洲欧美在线视频观看| 欧美视频日韩视频| 蜜桃精品视频在线| 国产日产亚洲精品系列| 9人人澡人人爽人人精品| 精品国产1区二区| 日韩一区精品字幕| 91免费观看在线| 国产欧美日韩一区二区三区在线观看| 亚洲一区影音先锋| 日韩午夜av一区| 成人听书哪个软件好| 亚洲女同一区二区| 日韩一区二区三区在线观看| 国产一区欧美一区| 日韩欧美中文字幕精品| 亚洲国产成人高清精品| 成人一道本在线| 一区二区视频免费在线观看| 日韩一区二区视频在线观看| 亚洲第一成人在线| 2014亚洲片线观看视频免费| eeuss鲁片一区二区三区在线看| 亚洲国产成人91porn| 在线免费观看日本欧美| 亚洲色图清纯唯美| 欧美日韩美少妇| 成人性生交大片免费看在线播放| 亚洲尤物在线视频观看| 色狠狠av一区二区三区| 免费精品视频在线| 亚洲素人一区二区| 色婷婷久久久亚洲一区二区三区 | 在线观看一区日韩| 亚洲日本在线观看| 91在线免费视频观看| 日本一区二区视频在线| 国产精品69毛片高清亚洲| 亚洲精选视频免费看| 精品国产91洋老外米糕| 欧美视频自拍偷拍| 偷拍日韩校园综合在线| 国产精品伦理一区二区| 欧美精品一卡二卡| 免费成人在线网站| 亚洲免费色视频| 国产亚洲精品超碰| 欧美一个色资源| 91高清视频在线| 日韩国产欧美在线视频| **网站欧美大片在线观看| 精品久久久久久无| 国产成人三级在线观看| 国产精品久久久久久妇女6080| www.av亚洲| 国产一区二区三区免费观看| 日韩综合小视频| 一区二区在线观看免费视频播放| 欧美日韩久久久一区| www.在线欧美| 性做久久久久久免费观看欧美| 国产精品久久三| 国产婷婷一区二区| 91国产免费观看| 蜜臀91精品一区二区三区| 久久久精品免费观看| 欧美精品v国产精品v日韩精品 | 粗大黑人巨茎大战欧美成人| 国精品**一区二区三区在线蜜桃| 欧美韩国日本一区| 久久―日本道色综合久久| 91麻豆高清视频| 日韩精品电影一区亚洲| 欧美极品aⅴ影院| 欧美午夜影院一区|