2012-02-20 23 views

回答

8

第一個將對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(); 
+0

所以'DoSomething的(),應該更好地命名爲'爲'returnSomethingNowWhichWillDoSomethingThen()'; - ) – 2012-02-20 13:02:34

0

在其中引用對象的方式意味着很多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; };

相關問題