有人能解释一下这个javascript代码中发生了什么吗?

有人能解释一下这个javascript代码中发生了什么吗?,javascript,Javascript,我希望浏览器显示上次刷新后的秒数。我不明白为什么 代码1不起作用; 代码2没有; 如果代码1不起作用,为什么代码3起作用?setInterval调用在代码1和代码3中类似。函数的定义方式不同。但我不清楚为什么这会产生影响 非常感谢你的帮助。我刚刚开始学习JavaScript 代码1 代码3 代码1调用DisplayTimesRunStart的原因是:setInterval获取该函数的返回值未定义,而不是向其传递引用。删除括号进行修复 代码2为setInterval传递一个字符串进行求值:pare

我希望浏览器显示上次刷新后的秒数。我不明白为什么 代码1不起作用; 代码2没有; 如果代码1不起作用,为什么代码3起作用?setInterval调用在代码1和代码3中类似。函数的定义方式不同。但我不清楚为什么这会产生影响

非常感谢你的帮助。我刚刚开始学习JavaScript

代码1

代码3

代码1调用DisplayTimesRunStart的原因是:setInterval获取该函数的返回值未定义,而不是向其传递引用。删除括号进行修复

代码2为setInterval传递一个字符串进行求值:paren是必需的,因为您希望在间隔超时时调用该方法

代码3传递一个引用,相当于代码1不带,因此它可以工作

setInterval需要一个首选函数引用或一个将被计算的字符串

.

在代码1中,更改此行:

setInterval(displayTimeSinceStart(), 1000);
为此:

setInterval(displayTimeSinceStart, 1000);
它应该每秒更新一次你的时间。您可以在此处看到固定版本的工作:

在代码2中,您正在传递一个字符串,该字符串将在每个计时器计时时发送给eval,并将正确调用所需的函数。这不是一种理想的编码方式。最好只传递对函数方向的引用,而不使用字符串和eval


在代码3中,您正在传递一个函数引用,就像我的代码1的固定版本一样,它恰好是一个对象的属性,因此该函数将在每个计时器计时时被调用。

非常感谢。这篇文章和你的其他文章都非常有用。谢谢jfriend00。感谢您的回复。
<html>
<head>
    <title>Time Since Refresh</title>
</head>
<body>
<br/>
<br/>
<span id="timeSinceStart"></span>

<script language="JavaScript">
    var timeRefreshed = new Date();
    var timeSinceStart = {
        displayTimeSinceStart: function(){
            var now = new Date();
            //compute elapsed time
            var elapsed = Math.round((now - timeRefreshed)/1000);
            document.getElementById("timeSinceStart").innerHTML = "Time Elapsed: " + elapsed + " seconds."; 
        }
    }

    // Update seconds counter
    setInterval(timeSinceStart.displayTimeSinceStart, 1000);

</script>

</body>
</html>
setInterval(displayTimeSinceStart(), 1000);
setInterval(displayTimeSinceStart, 1000);