日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
面試過程中javascript原型鏈與作用域的問題

現(xiàn)在校招也基本結(jié)束了,所以有時間把這段時間遇到的問題做個總結(jié).在很多的筆試題目中,發(fā)現(xiàn)有很多對JS作用域方面的考察,所以查閱資料總結(jié)一下.

創(chuàng)新互聯(lián)從2013年開始,先為新興等服務(wù)建站,新興等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為新興企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

眾所周知,js不像其他OOP語言那樣,他是一種弱類型的語言,對數(shù)據(jù)類型沒有很明顯的區(qū)別.還有一點不同是它的作用域,引起這點不同主要是因為js的繼承方式是通過原型鏈的方式來實現(xiàn)的.

a)js沒有塊級作用域,所謂塊級作用域即if,for,while(花括號括起來的部分)語句里面的部分.測試如下(Chrome瀏覽器).

下面為輸出結(jié)果

從結(jié)果可以看出,js不存在塊級作用域,一樣可以輸出str1.

b)js里面只有函數(shù)作用域,以及全局作用域,下面分析函數(shù)作用域.

下面為輸出結(jié)果

從結(jié)果可以看出js存在函數(shù)作用域,所以在fun1以外str2未定義.要想搞明白js的作用域就要牽扯到原型鏈的問題,下面對其簡單分析.

c)當(dāng)在當(dāng)前作用域找不到指定對象或變量時,js會通過原型鏈向上尋找,即查找當(dāng)前作用域的父級作用域,如若仍未找到,仍會向上尋找,直到找到,或找到根節(jié)點未找到為止.

下面為輸出結(jié)果:

從結(jié)果可以看出,fun2中仍然可以輸出str4,因為它的父級作用域為全局作用域,且全局作用域中存在str4變量.

d)關(guān)于上面說的父級作用域,還有一種情況,就是假如調(diào)用的是函數(shù),即函數(shù)嵌套時,父級作用域的指代.

這點容易讓人迷惑,誤以為會輸出Eric,但結(jié)果卻不是這樣的,結(jié)果如下:

從結(jié)果可以看出,輸出的是gaohui而不是Eric,此時的父級作用域指的是函數(shù)定義地方作用域的父級作用域,而不是函數(shù)調(diào)用的地方的父級作用域.


在此只是對面試過程中關(guān)于js的作用域方面的問題做了簡單的分析,其中涉及到更為復(fù)雜的js原型鏈的問題沒有深入說明,若想深究,搞明白,可參考這邊博文http://www.cnblogs.com/wangfupeng1988/tag/%E5%8E%9F%E5%9E%8B%E9%93%BE/


當(dāng)前名稱:面試過程中javascript原型鏈與作用域的問題
瀏覽路徑:http://www.5511xx.com/article/djisscc.html