簡體   English   中英

我應該在 for in 構造中使用 var 嗎?

[英]Should I use var in the for in construct?

我在一段 JavaScript 邏輯中使用了 for in 循環。 我應該使用 var 關鍵字嗎?

當我按照 W3School 的示例運行 for-in 循環時,沒有 var 然后作為副作用,它被定義為全局范圍(窗口)上的屬性:

(function () {

  var object = {
      a: 1,
      b: 2
  }
  for (varName in object) {
      alert(varName + " is" + object[varName])
  }

})();

alert(window.varName) //Returns "b" !
//This returns undefined when the for-in is rewritten as for (var varName in object).

編輯:這是上面代碼的小提琴供您欣賞: http : //jsfiddle.net/94uEh/

哪個是正確的首選形式? - 請注意,我希望支持 IE 8 (EcmaScript < 5)

如果您希望該值是本地的,則應始終使用var

不建議將關鍵字object用於變量,您可能會遇到跨瀏覽器的未定義行為。

此外,您通常應該避免應用任何假定為全局范圍本地的內容。

這不好:

for (varName in object) {
    alert(varName + " is" + object[varName])
}

這是對的:

for (var varName in object) {
    alert(varName + " is" + object[varName])
}

如果你需要在全局范圍內訪問這個值,你可能做錯了。 同樣在全局范圍內使用它也是無用的,因為它只會是最后一個值,它將存在於 varName 中。

您應該始終使用var ,否則您正在訪問全局變量(並且存在覆蓋其他人的其他變量的風險)

暫無
暫無

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

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