2012-01-06 3 views
2

Javascript 변수 선언에 대한 질문이 있습니다. 다음 두 가지 정의 방식의 차이점을 알려주십시오. alertMsg가 첫 번째 방법에서는 실행되지만 두 번째 방식에서는 실행되지 않는 이유는 무엇입니까? 미리 감사드립니다. Javascript 변수 선언에 대한 다른 방법

// 1

var alertMsgInvoker = alertMsg ('hi there'); 
function alertMsg (msg) { 
     alert(msg); 
} 

// 2

var alertMsgInvoker = function() { 
     alertMsg ('hi there'); 
} 
function alertMsg (msg) { 
     alert(msg); 
} 

답변

3

첫 번째 예에서는 alertMsg ('hi there');을 호출 한 결과를 alertMsgInvoker 변수에 할당합니다. alertMsgalertMsgInvoker에 입력하는 값을 반환하지 않는다는 사실은 여기에 또한 없습니다.

두 번째 예제에서 alertMsgInvoker은 호출시 함수 alertMsg을 호출하는 함수입니다. 첫 번째 예에서와 같은 결과를 얻으려면, 두 번째 읽을 필요가있다 :

var alertMsgInvoker = function() { 
     alertMsg ('hi there'); 
} 
function alertMsg (msg) { 
     alert(msg); 
} 

// Now call alertMsgInvoker 
alertMsgInvoker(); 
+0

나는 본다. var alertMsgInvoker = function() {...} equals 함수 alertMsgInvoker() {...} - zjy2004ren 지금 막 – zjy2004ren

+0

@ zjy2004ren - 기본적으로 정확히 그! :) – Rob

3

두 번째 예에서 함수를 호출하지 않습니다. 당신은 일부를으로 정의하지만 결코 호출하지 마십시오.

alertMsgInvoker을 정의 할 때 첫 번째 예에서는 alertMsg을 호출하고 두 번째에서는 alertMsg을 호출하는 함수를 정의하지만 둘 다 호출하지 않습니다.

1

을 첫 번째 시나리오에서는 당신이 "안녕하세요"매개 변수와 함수 ALERTMSG()를 호출된다 alert-function을 발생시키는 함수가 호출됩니다. 이 함수는 아무 것도 반환하지 않지만 함수의 반환 값을 변수 alertMsgInvoker에 바인드합니다.

두 번째 시나리오에서는 함수를 변수 alertMsgInvoker로 선언 한 다음 alertMsg라는 함수를 선언합니다. 당신은 여기서 어떤 기능도 발사하지 않습니다. 이것이 두 번째 예제가 경고 상자를 표시하지 않는 이유입니다.

+0

첫 번째 예에서는 알림이 실행되지 않습니다. –

+0

변수가있는 내 잘못 선언 된 함수. –

1

첫 번째 시나리오에서는 함수 alertMsg을 호출하여 정의되지 않은 값을 반환합니다.

var alertMsgInvoker = alertMsg ('hi there'); 
// assign the return value (undefined) to variable alertMsgInvoker 

두 번째 경우

, 당신은 단지 기능이지만, 결코 호출되지받을 변수 alertMsgInvoker을 정의.

관련 문제