我在网上找到了以下代码,以便将时钟插入我的网站。在startTime()函数的最后一行中,声明了变量t。但是,t内的代码似乎在不调用t的情况下启动了(这很明显,因为时钟在站点中运行良好)。
为什么此代码有效?
通过将函数分配为变量,我知道这些函数不会在分配时触发,而是需要被调用。我也尝试了下面的代码,而没有将setTimeout分配给t,它也可以工作。将其分配给变量有什么意义?
我是javascript的新手,因此任何可以帮助我了解此处发生情况的解释都很好。
提前致谢!
码:
function startTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('timeLink').innerHTML = "Time: " +
h + ":" + m + ":" + s;
var t = setTimeout(startTime, 500);
}
function checkTime(i) {
if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
最佳答案
分配变量时,将对右侧求值,并将求值结果放入变量中。
因此,如果您写:
var a = 5 + 6;
然后,解释器将计算5 + 6,得到11的结果,并将a分配给数字11
功能也是如此。如果您写:
function someFunction() {
return 9;
}
var x = someFunction();
解释器将对
someFunction
求值,调用该函数,得到9的结果,并将变量分配给9。这同样适用于您的示例。
var t = setTimeout(startTime, 500);
口译员将:
评估右侧
setTimeout(startTime, 500)
,然后调用该函数(等待500毫秒,然后调用startTime)
得到的结果是计时器的ID
将该ID分配给t。
但是,实际上您不需要变量
t
,因为它始终具有null
的值,并且从未使用过。在函数的最后,您可以编写setTimeout(startTime, 500);
,它会做完全相同的事情。摘要
实际上,函数确实会在分配时触发,因此可以对它们求值,以返回分配给变量的值。
希望能清除它!
关于javascript - 变量内部的代码会触发而不被调用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36375922/