window.onload=init()和window.onload=init

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试文档</title>
</head>
<body>
	
<p>
JavaScript 能够直接写入 HTML 输出流中:
</p>

<p>
您只能在 HTML 输出流中使用 <strong>document.write</strong>。
如果您在文档已加载后使用它(比如在函数中),会覆盖整个文档。
</p>
<script>
window.onload=init();
function init(){
document.write("<h1>这是一个标题</h1>");
document.write("<p>这是一个段落。</p>");
}
</script>
</body>
</html>

任务中遇到了需要在网页加载完成时触发的事件,用window.onload=init();时出现了方法无法调用出错问题,把括号去掉之后问题就解决了。


下面我们来分析一下原因:

经过资料查询和自己动手编写示例发现,window.onload=init();这种写法在程序运行到这句时,先执行init()函数,然后将init()方法的返回值赋给window.onload,这样的赋值毫无意义。


我们之所以不说window.onload=init(),原因是这会调用函数,而不是使用它的值。如果函数后边使用了小括号,比如init(),就是说你希望调用函数init。如果只是使用名而没有有小括号,就会把这个函数值赋给onload属性。输入时差别很细微但是它们的含义有天壤之别,所以一定要特别当心。


猜你喜欢

转载自blog.csdn.net/reality_fei/article/details/52584030