2013-04-29 1 views
0

JavaScript를 배우고 이해하려고합니다. 그것은 당신을 위해 아주 간단할지 모르지만 나는 설명이 필요합니다. 그래서 여기에 자바 스크립트 파일의 제 코드가 있습니다.javascript 메서드를 호출하는 두 가지 방법의 차이점은 무엇입니까

function divClick(){ 
alert("Hello World!!!"); 
} 

그래서 나는이

$(document).ready(function(){ 
$("div").click(function(){ 
    divClick(); 
});}); 

다 같이 호출하면 내가 DIV 요소를 클릭하면 벌금과 경고 상자 만 표시되어 노력하고 있습니다. 하지만 내가 접근하면

$(document).ready(function(){ 
$("div").click(divClick());}); 

페이지가로드되는 즉시 경고 상자가 자동으로 나타납니다. 나는 그것을 이해할 수 없다. 설명해 주시겠습니까? 어떤 URL이라도 있으면 그것을 배우게되어 기쁩니다.

+0

하십시오처럼 뭔가 기능을 변경 할 것이다. http://en.wikipedia.org/wiki/Indent_style – kay

+0

죄송합니다. 다음 번에 처리하겠습니다. – Ashish

답변

5

등 많은 프로그래밍 언어 (파이썬, 자바, C, C++ 등), 먼저 평가 한 후 자신을하고 있습니다 결과는 인수로 foo으로 전달됩니다.

$("div").click(function(){ 
    divClick(); 
}); 

식의 경우

함수식이다 function(){ divClick(); }이다. 그것을 평가 한 결과는 함수 (객체)입니다. 따라서 함수는 .click으로 전달됩니다.

$("div").click(divClick()); 

식의 경우

는 함수 호출이다 divClick()이다. 즉, 함수 divClick이고 실행 결과는이고 반환되는 값은 .click으로 전달됩니다.


간단한 예 :

function a(arg) { 
    alert(arg); 
} 

function b() { 
    return 42; 
} 

a(b()); // alerts 42 

여기 b 실행 먼저, 반환 값은 42이다. 이 값은 a에 대한 인수로 전달되며 arg과 같은 함수 내에서 액세스 할 수 있습니다. 모든 URL이있는 경우


나는 그것을 배울하실 수 있습니다.

정말 특별한 것은 없습니다. 함수 호출을 평가하는 방법입니다. 어쩌면 당신은 인수으로 전달되는 함수에 혼란 스러울 수 있습니다. 자바 스크립트에서 함수는 일등급 시민이며 다른 값 (숫자, 부울, 문자열 등)처럼 전달 될 수 있습니다. 함수에 대한

읽을 거리 :이 경우 click에 이벤트를 등록

+0

당신은 절대적으로 맞습니다. 세부 설명을 해주셔서 대단히 감사합니다. – Ashish

2

즉시 두 번째는 divClick()을 호출하고 그 결과를 .click() 콜백 처리기로 전달합니다.

사용이 대신 : 여기

$("div").click(divClick); 

우리는 이벤트 핸들러로 함수에 대한 참조를 전달하고 있습니다. 당신이 등

foo(a, b, ...); 

같은 함수 호출 모든 표현 a, b을 때

+0

고마워요, 제가 배울 수 있도록 좋은 책이나 URL을 제안 해 주시겠습니까? – Ashish

0

은 입력 함수에 대한 참조 그 이벤트가 발생할 때 호출되어야합니다. 첫 번째 경우 익명의 함수를 정의하고 있습니다. 그러나 두 번째 경우에는 divClick()이 참조가 아니므로 divClick 함수를 평가하여 참조를 반환합니다. 평가하는 동안 메서드가 실제로 호출되므로 동작이 호출됩니다.

+0

@zerkms : 고마워, 나는 그것을 바로 잡았다. – devang

0

당신이 "divClick"대신 divClick "의 반환 값라는 함수 객체를 전달되는 방식으로

$(document).ready(function(){ 
    $("div").click(divClick()); 
}); 

에 대한

$(document).ready(function(){ 
    $("div").click(divClick); 
}); 

을 변경할 수 있습니다 펠릭스 클링의 대답을 보완() "는이 경우에는 아무것도 아닙니다. 작업에

다른 더러운 형태는 적절한 들여 쓰기 작업을 수행하는 방법을 배울 첫째, 다시 코드를 공유하기 전에,이

function divClick(){ 
    return function(){ 
     alert("Hello World!!!"); 
    } 
} 
관련 문제