自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試過程中javascript原型鏈與作用域的問題

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

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

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

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

下面為輸出結果

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

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

下面為輸出結果

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

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

下面為輸出結果:

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

d)關于上面說的父級作用域,還有一種情況,就是假如調用的是函數,即函數嵌套時,父級作用域的指代.

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

從結果可以看出,輸出的是gaohui而不是Eric,此時的父級作用域指的是函數定義地方作用域的父級作用域,而不是函數調用的地方的父級作用域.


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

 

 

責任編輯:王雪燕 來源: 博客園
相關推薦

2011-05-12 18:26:08

Javascript作用域

2015-08-05 15:42:10

程序員面試問題

2021-03-17 08:39:24

作用域作用域鏈JavaScript

2021-03-16 22:25:06

作用域鏈作用域JavaScript

2010-11-11 09:40:34

BUG

2009-02-27 11:36:25

面試成績

2011-09-06 09:56:24

JavaScript

2019-08-05 09:15:39

Java程序員設計

2019-03-13 08:00:00

JavaScript作用域前端

2021-07-01 11:56:51

JavaScript開發(fā)代碼

2022-05-26 09:20:01

JavaScript原型原型鏈

2020-02-20 14:00:15

JavaScript原型原型鏈

2023-08-28 07:12:54

2017-05-05 10:31:35

JavaScriptprototype__proto__

2019-06-04 06:02:25

滲透測試漏洞腳本

2015-07-21 13:39:58

Javascript作用域

2020-03-12 13:00:36

Python斷點設置編程語言

2012-06-06 09:49:52

技術面試

2023-12-04 07:49:06

選擇排序排序算法

2024-08-27 12:36:33

點贊
收藏

51CTO技術棧公眾號