只是想知道之间有什么区别:
$("#some_div").click(customFunction);
和
$("#some_div").click(function() { customFunction(); });
...
function customFunction() {
console.dir(this);
}
答案 0 :(得分:1)
在第二个中,您已经定义了两个函数,一个是匿名函数,另一个是customFunction,首先,您只有一个匿名函数。
答案 1 :(得分:0)
可能没什么区别。除第一个选项外,您只声明了一个函数。
答案 2 :(得分:0)
在实践中,它可能不会有所作为(如果它目前两种方式都有效)。
然而,理论上,存在很大差异。
event
个参数。在你的第一种情况下,这将传递给customFunction
,在第二种情况下,它不会传递给undefined
。这意味着第一个参数的值为this
。this
。但是,customFunction
执行第二个案例中的window
将指向customFunction
。customFunction
变量的值。如果你这样做,你的第一个案例将执行旧函数,第二个案例将“尊重”$("#some_div").click(function() { customFunction.apply(this, arguments); });
的新值并执行它。通常,第二种情况更灵活(但也带有额外嵌套函数调用的开销)。如果您确实需要额外的灵活性(参见第3点)而不做出任何牺牲(第1点和第2点),请使用以下结构:
this
这将使用原始参数以及内部函数(customFunction
)调用的customFunction
(外部函数),但仍允许您换出{的实现{1}}到执行事件处理程序时。