国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

一道關于JavaScript變量作用域的面試題

2024-05-06 16:29:31
字體:
來源:轉載
供稿:網友
這篇文章主要為大家介紹了一道關于JavaScript變量作用域的面試題,如何解決這道面試題,感興趣的小伙伴們可以參考一下
 

小編覺得這道題對理解JavaScript 作用域還是很有幫助的,特此又把自己的解題思路梳理了一遍,希望對其它人有所幫助。

首先看下面試題:

var arr = [1, 2, 3];  for (var i = 0, j; j = arr[i++];) {    console.log(j);  }  console.log('---------');  console.log(i);  console.log('---------');  console.log(j);  console.log('---------');

在解題前,我們先回顧下 JavaScript 中,變量域相關的知識。

全局變量(Global)
全局變量是指在任何地方都可以訪問的變量,有兩種情況

在 function 外面聲明,不論是否用 var 關鍵字
在 function 里面聲明,不使用 var 關鍵字,當然聲明的語句必須被執行才可以
局部變量(Local ) 
局部變量只能在被聲明的 function 內部才能訪問
在 function 里面聲明,使用 var 關鍵字
兩點要注意的地方

先看代碼:

alert(i); // 輸出 undefined  for (var i = 0; i < 1; i++){};  alert(i); // 輸出1

JavaScript 不存在語句作用域,在語句內定義的變量會擴散到語句外邊, 例子中 i 在 for 語句中聲明,但是在 for 語句的外面任然可以訪問
在 for 語句之前就可以訪問到 i ,只不過這時候還沒有被賦值
開始我們的解題

i++ 是在 i 使用后再自加:

第一次執行時,j=arr[0],之后 i=1,console.log(j) 輸出 1

第二次執行時,j=arr[1],之后 i=2,ocnsole.log(j) 輸出 2

第三次執行時,j=arr[2],之后 i=3,ocnsole.log(j) 輸出 3

第四次(不符合 for  條件),j=arr[3] 為 undefined,之后 i=4,ocnsole.log(j) 沒有輸出,退出 for 循環

for 語句執行結束后,console.log(i) 由上分析可知輸出 4,console.log(j) 輸出 undefined

最后輸出結果為:

2------------------undefined---------

針對上面的分析和結果,想必大家都已經搞清楚了吧,然后我們開始舉一反三吧。

借題改題一
題目:
var arr = [1, 2, 3];

  for (var i = 0, j; j = arr[++i];) {    console.log(j);  }  console.log('---------');  console.log(i);  console.log('---------');  console.log(j);  console.log('---------');

答案:

23---------3---------undefined---------

借題改題二
題目:

function xxx() {    var arr = [1, 2, 3];    for (var i = 0, j; j = arr[i++];) {      console.log(j);    }  }  xxx();  console.log('---------');  console.log(i);  console.log('---------');  console.log(j);  console.log('---------');

答案:

123---------報錯:Uncaught ReferenceError: i is not defined

為大家就分享到這,希望對大家理解JavaScript作用域有所幫助。



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 密云县| 新津县| 东乌珠穆沁旗| 广东省| 建瓯市| 垦利县| 千阳县| 阿瓦提县| 图片| 视频| 昌乐县| 泾川县| 仙桃市| 永昌县| 文安县| 西藏| 永安市| 浦东新区| 克什克腾旗| 宁海县| 准格尔旗| 肇东市| 都昌县| 临夏县| 噶尔县| 什邡市| 镇沅| 凤山市| 巴彦淖尔市| 色达县| 油尖旺区| 大冶市| 彭州市| 龙江县| 南充市| 南川市| 珲春市| 米林县| 荣昌县| 长葛市| 巧家县|