在 .each() 中执行操作时使用全局变量是否更好/更快?页面上有很多元素?
$('.myClass').each(function (){
myC = $(this)
myH = myC.parent().height();
myC.height(myH)
}
相对于:
$('.myClass').each(function (){
var myC = $(this)
var myH = myC.parent().height();
myC.height(myH)
}
?
最佳答案
除非您明确需要全局持久性和全局访问,否则您应该始终使用局部变量。在这种特殊情况下,您应该使用局部变量(第二个选项)。
如果你好奇的话,在大多数 JS 引擎中,局部变量的访问速度比全局变量要快一些,因为先搜索局部作用域,然后再搜索其他更高的作用域,但这并不是选择局部变量还是全局变量的原因。
除非明确需要全局变量,否则始终使用局部变量。然后,在使用全局变量时,您必须仔细选择名称,以免与网页、项目或您可能使用的任何库中的其他任何内容发生冲突。我将几乎所有全局变量命名为一个对象,以避免与其他全局变量发生任何冲突。
此外,永远不要像第一个示例中那样使用显式声明的(我称之为意外的)全局变量。如果您想要一个全局变量,请在全局范围内声明它。
如果您需要一个变量从一个 .each()
函数调用中幸存下来,您可以将其定义为上一级,但仍然是一个局部变量,如下所示:
function myFunction() {
var maxHeight = 0;
$('.myClass').each(function (){
var myC = $(this);
if (myC.height() > maxHeight) {
maxHeight = myC.height();
}
}
// maxHeight is set here
}
关于javascript - 使用 jQuery .each() 时的全局变量与局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088803/