2011-04-08 56 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

相关问题