这两种说法有什么区别吗
setInterval(animateImage, 1000);
or
setInterval('animateImage()', 1000);
浏览器 js 引擎是否会以任何不同的方式解释第二个语句,从而可能导致内存泄漏或性能问题。情况也是如此setTimeout()
称呼。该应用程序使用 4 个定时器调用,间隔为 1-2 秒。
最大的区别是第二个语句会导致animateImage()
在全球范围内进行评估。
如果出现以下情况,这可能会导致问题
-
animateImage
不在全局范围内
-
animateImage
必须访问不在全局范围内的变量
例如。以下将not work:
function foo() {
var answer = 42;
function bar() {
alert(answer);
}
setTimeout('bar()', 1000);
}
foo();
实际上,永远没有理由使用第二条语句,因此有关内存泄漏的问题不再相关;)
显然,传递对函数的直接引用将比eval
uating 一个字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)