将函数动态分配给onclick时,以下两者有什么区别。
1...
button.onclick=function(){funct(this.value)};
2...
button.onclick=funct(this.value);
其中funct 是其他一些函数。
这两个是等价的吗?
将函数动态分配给onclick时,以下两者有什么区别。
1...
button.onclick=function(){funct(this.value)};
2...
button.onclick=funct(this.value);
其中funct 是其他一些函数。
这两个是等价的吗?
依靠。
如果funct(this.value)做了某事,并且您希望在单击按钮时发生某些事情,那么您需要#1。
如果funct(this.value) 返回一个函数,并且您希望在单击按钮时运行该函数,则需要#2。
不。不出所料,不同的两件事是不一样的。
button.onclick=funct(this.value);
在这里,funct立即评估调用。
button.onclick=function(){funct(this.value)};
在这里,调用funct被推迟到按钮的onclick处理程序被调用。
这里的关键区别在于,在第二种情况下(在我的帖子中,在您的第一种情况下)您将新函数分配给onclick,但在第一种情况下,您将调用的结果分配给funct.
这也对调用它们的值this和时间产生影响。value
秒示例调用函数并将函数的结果分配给onclick处理程序(因此函数必须返回一个函数)
单击按钮时,第一个调用函数。