2
简短问题:JavaScript中的变量范围
假设我们包含了jQuery。将这个函数执行得更快......
var example1 = (function($, jQuery) {
return function() {
// do something
}
})()
...比下面的例子:
var example2 = (function() {
return function() {
// do something
}
})()
?
在第一个jQuery对象将是undefined
,在第二个它将被继承。所以第二个应该更贵?
提高速度和摆脱继承变量会降低性能的最佳方法是什么?
jsPerf测试:http://jsperf.com/objinheritance
这可能会回答你的问题:http://stackoverflow.com/questions/9248963/javascript-why-the-access-to-closure-variable-might-be-slow – 2012-04-23 08:37:22
在第二个它不会被继承,会吗?它只是全球性的。就像第一个一样。如果你在本地访问它,它只是未定义的,你仍然有window。$和window.jQuery。 – 2012-04-23 08:45:20
Quote:“过早优化是万恶的根源”。继续学习JS中的范围,非常好 - 但不要为了优化而优化。这个特定问题只有在一段代码执行数千次(一次)时才有意义。谷歌关键字:“scope-chain”。电脑(CPU)的时间比开发者时间便宜很多! – 2012-04-23 08:49:54