我注意到调用带有空括号的函数或根本没有任何括号时的区别.但是,我没有向函数传递任何参数,所以我想知道,有什么区别:
window.onload = initAll();
Run Code Online (Sandbox Code Playgroud)
和
window.onload = initAll;
Run Code Online (Sandbox Code Playgroud)
请解释其背后的原理.
所以我们有一个页面:
<span id='container'>
<a href='#' id='first'>First Link</a>
<a href='#' id='second'>Second Link</a>
</span>
Run Code Online (Sandbox Code Playgroud)
并想要添加一些点击事件:
first.addEventListener('click', function(){alert('sup!');})
Run Code Online (Sandbox Code Playgroud)
奇迹般有效!但是,当您将第二个参数设为外部函数时:
function message_me(m_text){
alert(m_text)
}
second.addEventListener('click', message_me('shazam'))
Run Code Online (Sandbox Code Playgroud)
它立即调用该函数.我怎么能阻止这个?很烦人!
这是一个现场演示:http://jsfiddle.net/ey7pB/1/
我无法理解这个addItem()和removeItem()被不带括号addEventListener('click', addItem)。
var addButton = document.getElementById('add');
addButton.addEventListener('click', addItem);
var removeButton = document.getElementById('remove');
removeButton.addEventListener('click', removeItem);
function addItem(){
console.log('Add Button clicked');
}
function removeItem(){
console.log('Remove Button clicked');
}
Run Code Online (Sandbox Code Playgroud)