想知道下面给出的两个例子中的哪一个是"正确的方法来做到这一点"从优化的角度来看。让我们假设有问题的函数显然会运行一次。
示例1:
function example(){
//do stuff
}
setTimeout(example, 1000);
示例2:
setTimeout(function(){
//do stuff
}, 1000);
显然第二个例子必须多次声明一个函数,但函数本身在调用后会被垃圾收集,而示例只会声明一次,然后根据需要重新调用,但更重的是什么呢? / p>
答案 0 :(得分:1)
检查此测试用例,它可以帮助您查看执行时间的差异 https://jsperf.com/anonymous-vs-defined-iv
答案 1 :(得分:0)
Lambda函数没有性能优势。它们更简单。
如果该函数非常局部且不被重用,我会使用它。
Lambda表达的好处包括:
缺点是:
答案 2 :(得分:0)
我认为这个问题已得到解答,但作为事后的想法:
如果您担心污染范围,那么您可以将其全部包含在匿名函数中:
//Set return value of anonymous function to variable
var timer = (function() {
//Create a function only in this scope
//(Which is "close" to your setTimeout)
function example() {
console.log("test")
}
//Return your setTimeout call so you can manipulate it from the outside
return setInterval(example, 100);
})();
//Interact with setTimeout
setTimeout(function() {
clearInterval(timer);
}, 1000);