javascript 中的 t.onclick = do Something 和 t.onclick = do Something() 有啥区别? [复制]
Posted
技术标签:
【中文标题】javascript 中的 t.onclick = do Something 和 t.onclick = do Something() 有啥区别? [复制]【英文标题】:What's the differences between t.onclick = doSomething and t.onclick = doSomething() in javascript? [duplicate]javascript 中的 t.onclick = do Something 和 t.onclick = do Something() 有什么区别? [复制] 【发布时间】:2012-02-20 12:57:47 【问题描述】:可能重复:javascript syntax: function calls and using parenthesis
t.onclick = doSomething
t.onclick = doSomething()
两个事件注册有什么不同?
有时我会混淆它们,添加括号似乎不会造成大问题?
【问题讨论】:
【参考方案1】:第一个将doSomething
的引用分配给onclick
属性。第二个分配doSomething
的返回值。这不太可能是您想要的,除非doSomething
返回一个函数。
分配参考:
function doSomething()
console.log("something");
//When t is clicked, "something" is logged
t.onclick = doSomething;
赋值返回值:
function doSomething()
console.log("something");
//"something" is logged immediately. When clicked, nothing happens
t.onclick = doSomething();
分配一个返回的函数:
function doSomething()
return function()
console.log("something");
;
//When t is clicked, "something" is logged
t.onclick = doSomething();
【讨论】:
所以doSomething()
最好命名为returnSomethingNowWhichWillDoSomethingThen()
;-)【参考方案2】:
引用对象的方式在 JS 中意义重大。 doSomething;
和 doSomething();
之间存在差异,因为前者是引用函数,后者是引用函数的 return value
。让我们看看这个例子,你就会明白我的意思。 doSomething();
不仅调用函数,还返回函数的return value
:
function doSomething()
return 5;
console.log(doSomething); // function() return 5;
console.log(doSomething()); // 5
所以t.onclick = doSomething;
很像t.onclick = function() return 5; ;
【讨论】:
以上是关于javascript 中的 t.onclick = do Something 和 t.onclick = do Something() 有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章