命名以前的匿名函数会中断

时间:2013-04-01 19:02:13

标签: javascript

为什么这不起作用:

$(document).on('click','a',myFunction);
var myFunction = function() {
   debugger;
}

当这样做时:

$(document).on('click','a',function() {
   debugger;
}

我已经开始通过命名所有匿名函数并将它们分解为各自独立的命名函数来了解更多信息。

2 个答案:

答案 0 :(得分:4)

你必须换行:

var myFunction = function() {
   debugger;
}
$(document).on('click','a', myFunction);

否则,您将assigning undefined作为事件处理程序,因为当您将变量myFunction传递给.on时,变量var myFunction = function someName() { debugger; } 还没有值。

另外:将一个函数赋值给一个不会使它命名的变量,它仍然是一个匿名函数,只存储在一个变量中。命名函数将是:

{{1}}

有关详细信息,请参阅Named function expressions demystified

答案 1 :(得分:0)

而不是说:

var myFunction = function() {
   debugger;
}

你需要说:

function myFunction() {
   debugger;
}

这将在第一次传递时声明该函数,以便在程序执行期间引用它。