我是javascript初学者。 在javascript中有奇怪的东西,我感到愚蠢
//First statement
var myVar = "Hello";
function hello() {
document.getElementById("demo").innerHTML = myVar;
}
//second statement
var myVar = setInterval(myTimer, 1000);
function myTimer() {
document.getElementById("demo").innerHTML = new Date().toLocaleTimeString();
}
为什么第二个函数在没有调用的情况下工作? 不像第一个?这给我带来了很多问题!
答案 0 :(得分:2)
为什么第二个函数在没有调用的情况下工作?不像第一个?
您正在将函数myTimer
传递给setInterval
。 setInterval
每1000毫秒调用一次函数。因此,虽然不是你直接调用该函数,但它仍然被调用(setInterval
)。 setInterval
的唯一目的是调用您传递给它的函数作为参数。
相反,你没有对hello
做任何事情。你既没有直接调用它,也没有将它传递给任何其他可以调用它的函数。
答案 1 :(得分:1)
从我可以从评论中收集到的内容,您似乎对myTimer()
函数的工作原理感到困惑。这是一个简短的解释:
在这一行
var myVar = setInterval(myTimer, 1000);
您正在调用setInterval()
函数。该函数需要2个参数,您已定义了这些参数。第一个是功能;要执行的代码。第二个是每次执行所述函数之间的延迟。
在下一行中,您已将变量myTimer
声明为使用setInterval
执行的函数。
有关详细信息,请查看MDN documentation。具体来说,它说:
var intervalID = window.setInterval(func, delay)
参数定义为:
func :每延迟毫秒执行一次的函数。
和
延迟:时间,以毫秒(千分之一秒)为单位,计时器应在执行指定函数或代码之间延迟。