Firefox中的setTimeOut问题

Nix*_*Nix 3 javascript firefox

为什么Firefox(v16)中没有以下工作?

var t = setTimeout(foo(), 1000);
Run Code Online (Sandbox Code Playgroud)

我在控制台中遇到的错误是:"无用的setTimeout调用(参数周围缺少引号?)".将它包装在引号中似乎没什么用,除了使它呈现为字符串(不出所料).

但是当我将它包装在一个像这样的匿名函数中时,它确实工作正常:

var t =
    setTimeout(function(){
       foo();
     }, 1000);
Run Code Online (Sandbox Code Playgroud)

但为什么有必要呢?为什么它不会在Webkit或Opera中爆炸?幸运的中风?

Dan*_*ite 10

这是因为你foo在第一个例子中调用它.

它基本上与这样做:

var tempResultOfFoo = foo();
var t = setTimeout(tempResultOfFoo, 1000);
Run Code Online (Sandbox Code Playgroud)