循环中的变量函数定义
Variable functions definitions inside a loop?
在循环中定义函数会影响性能吗?
像
var doSomething = function(element){
$(element).whatever();
};
return this.each(function(){
doSomething(this);
})
与
return this.each(function(){
var element = this,
doSomething = function(){
element.whatever();
};
doSomething();
...
})
在第二个版本中,函数被定义为3245322453245次,这取决于迭代的元素数量,对吧?
我强烈建议使用http://jsperf.com/来测试这样的问题。
我们所能给你的只是根据我们的个人经历做出的最好的猜测,这些经历会有很大的不同。
编辑:还有,Something正在做什么对回答这个问题也非常重要。
我自己以前也对自己做测试感到惊讶。
希望这能有所帮助。
从技术上讲,在两个版本中,定义函数的次数都在80亿次左右。对于大量的迭代,您应该通过这样定义它来获得一些性能优势。
var doSomething = function(index, element){
$(element).whatever();
};
return this.each(doSomething);
好吧,element
的作用域以及doSomething
的作用域正好在当前循环迭代中,所以如果一切都实现正确,即垃圾收集器得到了优化,它应该可以很好地处理它。当然,你最好使用第一个版本。
相关文章:
- 用嵌套函数和默认函数定义函数
- 使用Extjs进行函数定义
- JS中奇怪的函数定义语法
- 重写javascript函数定义
- 使用角度图时,我可以用函数定义数据点颜色吗
- modal.js中的匿名函数定义
- 为从AJAX调用中utlizes DATA参数的函数定义回调
- Emacs:在 etag 中查找函数定义
- Javascript:对象函数定义
- 为什么要在函数定义之外引用静态变量(函数属性)
- Ember 对象函数定义中的计算属性.js
- javascript/jQuery中函数定义的区别
- CoffeeScript 承诺与函数定义链接
- 如何在使用 eval() 评估 JavaScript 时将回调函数定义作为参数传递
- Javascript - 为什么下面的函数定义错误
- 使用函数声明时的自定义函数(也称为惰性函数定义)
- JavaScript 函数定义不正确
- jQuery off on 时是用匿名函数定义的
- 停止 IntelliJ 11 在启用 JSLint 时向每个嵌套函数定义添加“use strict”
- 为什么不是't我为这个函数定义的javascript函数