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