看看下面的代碼:JavaScript的 - 調用函數使用和不使用括號
HTML
<button id="button>click me</button>
JS - VERSION 1
window.onload = init;
function init() {
console.log('init called');
var button = document.getElementById('button');
button.onclick = buttonClickHandler;
}
function buttonClickHandler() {
console.log('button clicked');
}
VS相同的HTML
JS - VERSION 2
window.onload = init();
在這兩種情況下,爲「init稱爲」出現在控制檯「立即」,但在第二種情況下,它後面是一個錯誤,說明按鈕爲空。
這裏有兩件事。 1)在版本1中,它等待DOM在版本2中加載2),它發生在DOM加載之前,或者看起來如此。
我的問題。請儘可能清楚地說明版本1中發生了什麼,以及版本2中發生了什麼。什麼是window.onload = init
與window.onload = init()
是什麼?另請說明每個版本的行爲。爲什麼1會等待,但2不會?
腳本需要放在按鈕元素之前,例如在頭部:http://jsfiddle.net/XMEjr/1/
thx。我很有趣,如何寫骨幹和角碼,但甚至不知道這一點。有些人可能會說可怕的,但我繼續,並始終寫清楚可重複使用的代碼。不過,我認爲這種基本的理解能夠幫助很多事情在許多情況下都能實現。 – dewd
另外,我只是讀了一些地方,當使用window.onload = init()會工作,如果init()返回一個函數,例如runInit()。然後runInit()會在DOM加載後運行。在詢問之前,我真的需要更好的谷歌搜索,但是您一直在幫助很大。謝謝。 – dewd
不客氣。 )是的,你可以運行一個返回函數的特定函數;畢竟,這是一種價值。 – raina77ow