【发布时间】:2016-01-22 17:16:03
【问题描述】:
我有一个近乎强迫的习惯,但我认为可能完全没有必要。使用如下代码:
function abc(){
var a,b;
for(var i=0;i<10;i++){
a=document.getElementsByTagName('LI').item(i).width;
b=document.getElementsByTagName('DIV').item(i).width;
// now do something with a and b
}
return;
}
我强迫性地在循环之前声明变量,而不是:
function abc(){
for(var i=0;i<10;i++){
var a=document.getElementsByTagName('LI').item(i).width;
var b=document.getElementsByTagName('DIV').item(i).width;
// now do something with a and b
}
return;
}
请注意,在第二个代码块中,我在每次循环迭代时使用var 定义变量。我想第一个是可读性等方面的最佳实践。但有时我只是在破解一些东西,不需要遵循最佳实践。
我的问题是:
是否有任何理由不定义将在循环内使用 var 关键字重新定义的变量?
【问题讨论】:
-
vars 无论如何都会被提升,包括for语句中的那个。 IMO not 在函数顶部声明它们(包括你没有声明的函数)带有 暗示 不存在提升,只会让事情变得更难思考关于,尤其是当未来的读者可能无法完全理解 JS 时。这只是噪音。 -
您需要使用 VAR 的唯一时间是当变量将被保存在外部(全局)时。在函数内部执行此操作意味着无论您是否对它进行 VAR,它都会在函数完成时下降。是否在循环中执行它并不重要。就是因为在函数里面没用。
-
@durbnpoisn。嗯 - 也许我误解了你,但这似乎与我的理解相反。如果我不使用
var关键字在函数中定义变量,它将被拉入全局范围 - 从而产生与此问题无关的其他问题。 -
@DaveNewton。那么它纯粹是化妆品吗?假设,我在开发者控制台中进行黑客攻击并且不关心可读性,是否出于所有意图和目的,都一样?
标签: javascript performance loops variables