2011-04-08 3 views

답변

3

()을 함수 에 넣으면이 호출되어 함수가 실행됩니다. 예에서 함수는 a입니다.

내 이가지 경우

은 생각 될 수있다 : 함수 a()으로 호출되는 어느 경우에도 2

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

예 1

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

예 정확하게 한 번 - 따라서 그들은 동일한 outpu를 산출한다. 티.

+0

"함수가 실행되는 원인이 ..."감사합니다 .. 흥미로운 – Bagong21

0

첫 번째 경우 this.c = a으로 과 함께 호출 할 함수에 "포인터"가있는 this.c을 설정하고 있습니다.

1

첫번째 경우 :

this.c=a; 

이것은 함수a 참조하는 객체의 속성 c (즉 b가 호출된다) 설정한다.

어떤 함수도 인 () 구문을 사용하여 (참조를 통해조차도) 호출 할 수 있습니다.

번째 경우 :

this.c=a(); 

통화 a, 그 결과 스트링 "OK"인 a의 (즉, 반환 값)으로 설정 c.

c의 값을 alert(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

관련 문제