这两个语句之间有什么区别

setInterval(animateImage, 1000);

or

setInterval('animateImage()', 1000);

浏览器js引擎将以任何可能导致内存泄漏或性能问题的不同方式来解释第二条语句。 setTimeout()调用也是如此。该应用程序使用1-2秒间隔的4个计时器调用。

最佳答案

最大的不同是第二条语句将导致animateImage()在全局范围内进行评估。

如果这样会导致问题

  • animateImage不在全局范围内
  • animateImage必须访问不在全局范围内的变量

  • 例如。以下将不起作用起作用:
    function foo() {
        var answer = 42;
        function bar() {
            alert(answer);
        }
        setTimeout('bar()', 1000);
    }
    
    foo();
    

    实际上,从来没有理由使用第二条语句,因此有关内存泄漏的问题不再相关;)

    显然,传递直接引用到函数比使用字符串eval更快。

    09-25 16:21