将函数动态分配给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
处理程序(因此函数必须返回一个函数)
单击按钮时,第一个调用函数。