자바 스크립트에서 매개 변수 집합을 함수에 전달하면 함수를 호출하고 반환 값을 계산합니다.
var test = function() { return 1; } // Creates a new function that returns 1
alert(test.toString()); // => "function() { return 1; }"
alert(test().toString()); // => "1"
심지어 도 기능을 가리키는 변수 일뿐입니다. runSomething()
를 호출 할 때 첫 번째 예는, 즉시 그 기능을 평가하는 경우
alert(alert); // => "function alert() { [native code] }"
그래서, 다음에 bind()
파라미터로서 반환 값을 전달한다.사용자의 경우, 페이지가로드 될 때, 다음 자체 bind()
전달되는 가변 runSomething
함수를 사용 undefined
번째 예에서
bind()
에 전달 alert()
을 evals. Bind는 이벤트가 발생할 때만 해당 함수를 사용합니다.
정말 당신의 마음을 날려, 당신은 예를 들어 ... 올바른 함수를 반환하는 함수, 다음 (첫 번째 예에서와 같은) 기능을 평가를 할 수 그것은 단지 모두에 따라 달라집니다
var counter = 0;
function GenerateNext() {
counter++;
return new Function("alert(" + counter + ")");
}
a = GenerateNext();
b = GenerateNext();
b() // will alert 2
a() // will alert 1
$(selector).bind('event', GenerateNext()); // alert 3
$(selector).bind('event', a); // alert 1
$(selector).bind('event', b); // alert 2
당신은하려고합니다. 함수 자체를 전달하거나 함수의 반환 값을 전달하십시오.
그래서 두 번째 버전에서는 문제가 발생하지 않습니까? – JSNewbie
@JSNewbie : 두 번째 버전에서는 이벤트에 대해 함수를 실행하지만 첫 번째 버전에서는 바인딩 할 때 함수가 이벤트를 반환 할 때 함수를 실행합니다. – tcooc
너무 이론적으로 미안해, 나는 이해하지 못해. 누군가가 나의 실제적인 예를 근거로 설명 할 수 있는가? – JSNewbie