zap*_*ing 3 javascript performance timeout
这两个陈述之间有什么区别吗?
setInterval(animateImage, 1000);
or
setInterval('animateImage()', 1000);
Run Code Online (Sandbox Code Playgroud)
浏览器js引擎是否会解释第二个语句是否会导致内存泄漏或性能问题.setTimeout()呼叫的情况也是如此.该应用程序使用4个定时器调用,间隔为1-2秒.
最大的区别是第二个语句将导致animateImage()在全局范围内进行评估.
这可能会导致问题
animateImage 不在全球范围内animateImage 必须访问不在全局范围内的变量例如,以下将不工作:
function foo() {
var answer = 42;
function bar() {
alert(answer);
}
setTimeout('bar()', 1000);
}
foo();
Run Code Online (Sandbox Code Playgroud)
实际上没有理由使用第二个语句,因此关于内存泄漏的问题不再相关;)
显然,传递对函数的直接引用将比eval使用字符串"更快" .
| 归档时间: |
|
| 查看次数: |
3037 次 |
| 最近记录: |