setInterval不起作用?

Mob*_*dde 7 javascript jquery

var until = $("#time").html();

function updateTime() {
    $("#time").html(
        date("d", until) + " day(s)<br />" +
        date("h", until) + " hour(s)<br />" +
        date("i", until) + " minute(s)<br />" +
        date("s", until) + " second(s)"
    );
}

setInterval("updateTime(until)",1000);
Run Code Online (Sandbox Code Playgroud)

每次我运行这个,我都会收到此错误:

未捕获的ReferenceError:直到未定义(匿名函数)

我看不出什么是错的.我试图谷歌很多,但我找到的每一页都说setInterval()是对的.

Gab*_*oss 16

闭包:

setInterval(function() {updateTime(until); }, 1000);
Run Code Online (Sandbox Code Playgroud)


lon*_*day 5

麻烦的是你将代码传递setInterval给字符串.这意味着它在全球范围内进行评估.该变量until不存在于全局范围中,仅存在于其定义的范围内.

如果你传入一个函数,这意味着该变量until可用(它是"关闭"):

setInterval(function() {
    updateTime(until);
},1000);
Run Code Online (Sandbox Code Playgroud)