在javascript中t.onclick = doSomething和t.onclick = doSomething()之间的区别是什么?

hh5*_*188 0 javascript events event-handling

可能重复:
javascript语法:函数调用和使用括号

 t.onclick = doSomething 

 t.onclick = doSomething()
Run Code Online (Sandbox Code Playgroud)

这两个活动注册有什么不同?

有时候我会混淆他们,添加一个括号似乎不会造成大问题?

Jam*_*ice 8

第一个分配doSomething对该onclick属性的引用.第二分配返回值doSomething.除非doSomething返回一个函数,否则这不太可能是你想要的.

分配参考:

function doSomething() {
    console.log("something");
}
//When t is clicked, "something" is logged
t.onclick = doSomething;
Run Code Online (Sandbox Code Playgroud)

分配返回值:

function doSomething() {
    console.log("something");
}
//"something" is logged immediately. When clicked, nothing happens
t.onclick = doSomething();
Run Code Online (Sandbox Code Playgroud)

分配返回的函数:

function doSomething() {
    return function() {
        console.log("something");
    };
}
//When t is clicked, "something" is logged
t.onclick = doSomething();
Run Code Online (Sandbox Code Playgroud)