Javascript 为什么myCheckBox.onclick=myFunction();工作不正常,但myCheckBox.onclick=function(){myFunction();}是否正常?

Javascript 为什么myCheckBox.onclick=myFunction();工作不正常,但myCheckBox.onclick=function(){myFunction();}是否正常?,javascript,Javascript,我正在尝试做一些简单的事情,有3个复选框,当我点击其中一个时,我想取消选择其余的复选框。我还想使用我为此编写的方法,以便在单击时使用 当我这样做的时候 myCheckBox.onclick = myMethod(); 当页面加载时,它只运行一次,通常无法正常工作 但当我这么做的时候 myCheckBox.onclick = function(){ myMethod(); }; 一切按计划进行。为什么它是这样工作的?您需要这样做 myCheckBox.onclick = myMetho

我正在尝试做一些简单的事情,有3个复选框,当我点击其中一个时,我想取消选择其余的复选框。我还想使用我为此编写的方法,以便在单击时使用

当我这样做的时候

myCheckBox.onclick = myMethod(); 
当页面加载时,它只运行一次,通常无法正常工作

但当我这么做的时候

myCheckBox.onclick = function(){
   myMethod();
};
一切按计划进行。为什么它是这样工作的?

您需要这样做

myCheckBox.onclick = myMethod; 
将方法分配给事件

当您运行myMethod()时,它会将myMethod返回的任何内容应用到onclick事件侦听器中,您需要使用:

myCheckBox.onclick = myMethod;

myCheckBox.onclick=myMethod这是指向函数引用的方式。通过在末尾使用
()
,函数将执行,
onclick
将接收其返回值。当您在类似
myMethod()
的函数后添加参数时,它将执行函数并使用返回值。因此,假设
myMethod()
返回
“Hello”
,则行
myCheckBox.onclick=myMethod()
相当于
myCheckBox.onclick=“hello”
。相反,您不希望执行函数,而是希望指向函数的定义,即
myCheckBox.onclick=myMethod
。您的第二个示例指出了一个新的匿名函数的定义,该函数执行
myMethod()
。非常感谢,我花了很多时间在它上面,我不愿意承认