[英]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.