Javascript binding event handler function by name
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
JavaScript: var functionName = function() {} vs function functionName() {}
为什么这样做......
1 2 3 4 5 | $("#clickme").click( showAlert ); function showAlert() { alert("Hiya" ); } |
......但不是这个......?
1 2 3 4 5 | $("#clickme").click( showAlert ); var showAlert = function() { alert("Hello" ); } |
这是因为吊装而发生的。
在第一种情况下,代码被解释为(注意如何首先评估函数声明):
1 2 3 4 | function showAlert() { alert("Hiya" ); } $("#clickme").click( showAlert ); |
而你的第二个被解释为:
1 2 3 4 5 6 | var showAlert; $("#clickme").click( showAlert ); showAlert = function() { alert("Hello" ); } |
由于
这就是提升的作用:它将变量和函数声明提升到闭包的顶部。
在那里招待有很多好的资源,包括SO。
第一个是
第二个是
在执行任何代码之前,首先读取函数声明。
所以第一种情况有效。第二种方法不起作用,因为在将函数分配给它时尚未定义,...
所以这会奏效
1 2 3 4 5 | var showAlert = function() { alert("Hello" ); } $("#clickme").click( showAlert ); |
即,定义函数然后分配处理程序