一道關(guān)于JavaScript變量作用域的面試題
來源:易賢網(wǎng) 閱讀:800 次 日期:2016-07-21 16:02:46
溫馨提示:易賢網(wǎng)小編為您整理了“一道關(guān)于JavaScript變量作用域的面試題”,方便廣大網(wǎng)友查閱!

小編覺得這道題對理解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 中,變量域相關(guān)的知識。

全局變量(Global)

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

在 function 外面聲明,不論是否用 var 關(guān)鍵字

在 function 里面聲明,不使用 var 關(guān)鍵字,當然聲明的語句必須被執(zhí)行才可以

局部變量(Local ) 

局部變量只能在被聲明的 function 內(nèi)部才能訪問

在 function 里面聲明,使用 var 關(guān)鍵字

兩點要注意的地方

先看代碼:

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作用域有所幫助。

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機網(wǎng)站地址:一道關(guān)于JavaScript變量作用域的面試題

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)