0

将函数动态分配给onclick时,以下两者有什么区别。

1...

button.onclick=function(){funct(this.value)};

2...

button.onclick=funct(this.value);

其中funct 是其他一些函数。

这两个是等价的吗?

4

3 回答 3

4

依靠。

如果funct(this.value)做了某事,并且您希望在单击按钮时发生某些事情,那么您需要#1。

如果funct(this.value) 返回一个函数,并且您希望在单击按钮时运行函数,则需要#2。

于 2013-07-06T18:07:22.220 回答
3

不。不出所料,不同的两件事是不一样的。

button.onclick=funct(this.value);

在这里,funct立即评估调用。

button.onclick=function(){funct(this.value)};

在这里,调用funct被推迟到按钮的onclick处理程序被调用。

这里的关键区别在于,在第二种情况下(在我的帖子中,在您的第一种情况下)您将新函数分配给onclick,但在第一种情况下,您将调用的结果分配给funct.

这也对调用它们的值this和时间产生影响。value

于 2013-07-06T18:07:17.417 回答
0

秒示例调用函数并将函数的结果分配给onclick处理程序(因此函数必须返回一个函数)

单击按钮时,第一个调用函数。

于 2013-07-06T18:05:54.530 回答