为什么这个不行:命名以前匿名函数打破
$(document).on('click','a',myFunction);
var myFunction = function() {
debugger;
}
当这样做:
$(document).on('click','a',function() {
debugger;
}
我开始学会命名我所有的匿名函数,并打破他们更多分成他们自己独立的命名功能。
为什么这个不行:命名以前匿名函数打破
$(document).on('click','a',myFunction);
var myFunction = function() {
debugger;
}
当这样做:
$(document).on('click','a',function() {
debugger;
}
我开始学会命名我所有的匿名函数,并打破他们更多分成他们自己独立的命名功能。
不要说:
var myFunction = function() {
debugger;
}
你需要说:
function myFunction() {
debugger;
}
这将宣布在第一轮的功能,使得它可以在程序执行过程中被引用。
你必须换行:
var myFunction = function() {
debugger;
}
$(document).on('click','a', myFunction);
否则,你会assigning undefined
作为事件处理程序,如变量myFunction
没有一个值然而,当你将它传递给.on
。
另外:将一个函数赋值给一个像这样的变量没有命名的变量,它仍然是一个匿名函数,只是存储在一个变量中。命名函数是:
var myFunction = function someName() {
debugger;
}
哇。 JavaScript永远不会让我感到意外。这就是为什么我问这些基本问题,因为我总是学到一些我从未期望的东西。 –
@Benjamin感谢编辑,这些链接使答案更好。 – bfavaretto
哦,这是因为我必须在引用它之前定义函数。它必须在源代码顺序上面。 –
但是没有办法提升函数声明吗? –
函数*声明*总是被挂起。但是你有什么不是声明,它是一个函数*表达式*。有关详细信息,请参阅我答案底部链接的文章。 – bfavaretto