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屬性。輸入時差別很細微但是它們的含義有天壤之別,所以一定要特別當心。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章