这是一个很简单的数字时钟js程序。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
function displayTime(){
var elt=document.getElementById('clock');
var now=new Date();
elt.innerHTML=now.toLocaleTimeString();
setTimeout(displayTime,1000);
}
window.onload=displayTime;
</script>
</head>
<body>
<h1>Digital Clock</h1>
<span id="clock"></span>
</body>
</html>
我想问的是调用函数的语句:window.onload=displayTime;为什么不能是:window.onload=displayTime();为什么加括号就不对呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
不加括号是将window.onload指向了displayTime,网页加载完执行函数。
加括号之后就直接执行displayTime函数,将函数的返回结果赋给了window.onload。
首先,建议用setInterval,而不是循环创建setTimeout。
window.onload 是一个事件,window.onload 事件被触发的时候,会执行其绑定的函数,也就是说什么时候执行并不是我们决定的,而是浏览器决定的,我们只需要绑定函数即可:
这个问题其实就是看看你的调用这个函数本身,还是取得函数返回的值,例如
回到咱们这个问题 :首先window.onload是一个window下的函数调用,我们将displayTime这个函数给onload,其次如果是displayTime()的话,是将displayTime这个函数执行的结果赋值给了window.onload
这样是不合适的。
这是我的理解,应该对你有帮助
你可以这样理解,
window.onload本身也是一个函数(类型),所以你要把一个函数赋值给他,浏览器会自己偷偷地调用window.onload()。如果你的displayTime返回了一个函数,那么也可以用displayTime()。比如这样: