簡體   English   中英

JavaScript可以在局部變量之間混淆嗎?

[英]Can JavaScript get confused between local variables?

如果我有一對函數,這兩個設置局部變量,例如,變量i共同for循環,一個恰巧,而其他正在運行叫,有沒有命名空間混亂的危險嗎?

請記住,JavaScript沒有塊范圍,只有函數范圍。

此外,如果您有嵌套循環,則以下示例中只有一個i變量:

function myFunction() {
  for (var i = 0; i < 10; i++) {
    for (var i = 0; i < 10; i++) {
      // code here will run 10 times instead of 100 times
    }
  }
  // variable i is still accessible from here
}

Douglas Crockford建議var語句應該是JavaScript編程語言的代碼約定中函數體中的第一個語句:

JavaScript沒有塊范圍,因此在塊中定義變量會使經驗豐富的程序員與其他C族語言混淆。 定義函數頂部的所有變量。

我認為他有一個觀點,正如您在下面的示例中所看到的,這不會讓讀者誤以為變量ij保存在for循環塊的范圍內:

function myFunction() {
  var i, j;    // the scope of the variables is now very clear
  for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
      // code here will run 100 times
    }
  }
}

只要您使用var ,就像這樣:

for(var i = 0; i < something; i++)

然后它是本地的,你很好,如果你使用var ,你手上有一個全局變量,以及潛在的問題。 此外,如果for循環嵌套在另一個循環中,則應為每個循環使用不同的變量名稱。

如果你指的是嵌套循環,那將是一個問題。 每次進入第二個for循環時,i的值(先前在外部for循環中設置)將被重置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM