2011-04-08 53 views

回答

3

()放在函數後面調用它 - 導致函數被執行。在你的例子中,函數是a

您的兩個病例可被認爲是:

實施例1

d.c = a; 
d.c(); // Call function a 

實施例2

d.c = a(); // Call function a, put result in d.c 
d.c; 

在任一情況下,函數a被調用與()只有一次 - 因此他們產生相同的輸出噸。

+0

「導致被執行的功能。」感謝.. – Bagong21 2011-04-08 05:20:42

0

在第一種情況下,使用this.c = athis.c設置爲「指針」,然後用函數d.c()調用該函數。

1

第一種情況:

this.c=a; 

此設置對象的屬性c(即b上調用)向功能a的參考。

使用()語法(即alert(d.c()))可以調用任何函數(即使通過引用)。

第二種情況:

this.c=a(); 

呼叫a,並設置c到結果的a(即返回值),其是字符串 「OK」。

然後,檢索值calert(d.c)將產生與第一個例子相同的結果,但它是以完全不同的方式得出的。

一種方式存儲對函數本身的引用,並在需要其值時調用它,另一種方式立即調用該函數並僅存儲結果供以後檢索。

0

雖然這裏有足夠的正確答案,我將展示一個有趣的結果:

var counter = 1 

function a() { 
    return counter++ 
} 

function b() { 
    this.c = a; // your example 1 
    this.e = a(); // your example 2 
} 

var d = new b(); 

//a() was evaluated once, result put in e 
alert(d.e);   // 1 
alert(d.e);   // 1 
alert(d.e);   // 1 

//a() is evaluated each call: 
alert(d.c());  // 2 
alert(d.c());  // 3 
alert(d.c());  // 4 
+0

有趣......所以有差別 – Bagong21 2011-04-08 05:31:09

相關問題