最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年03月08日 11:51:09   作者:ShineJaie  
這篇文章主要為大家介紹了一道關于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 關鍵字,當然聲明的語句必須被執(zhí)行才可以
局部變量(Local )
局部變量只能在被聲明的 function 內(nèi)部才能訪問
在 function 里面聲明,使用 var 關鍵字
兩點要注意的地方

先看代碼:

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

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

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

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

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

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

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

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

最后輸出結(jié)果為:

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

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

借題改題一
題目:
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('---------');

答案:

2
3
---------
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('---------');

答案:

1
2
3
---------
報錯:Uncaught ReferenceError: i is not defined

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

相關文章

最新評論

乳源| 宁晋县| 博客| 尤溪县| 长治县| 马龙县| 新竹市| 阿合奇县| 潜山县| 刚察县| 台州市| 千阳县| 皮山县| 尚义县| 靖州| 澄江县| 阿巴嘎旗| 台北县| 仁寿县| 东阿县| 镇雄县| 宜川县| 象山县| 洪洞县| 高平市| 万载县| 玉环县| 两当县| 青海省| 仁布县| 桃园市| 武山县| 瓮安县| 安达市| 邢台市| 德化县| 德钦县| 辽宁省| 石景山区| 临高县| 古蔺县|