2013-12-22 2 views
1

파이썬과 다소 C와 가장 잘 알고, 내가 JS에이 구문을 볼 때 정말, 하나는 함수의 반환 값을 전달하는 것, 나에게 다른를 파이썬에서window.onload = stuff와 window.onload = stuff() 사이에 차이가 있습니까?

function begin() { 
    console.log("done did it"); 
} 

window.onload = begin(); // the same output as 
window.onload = begin; // this one 

혼란 함수에 대한 포인터. 이 두 문장에 대한 JS의 의미는 무엇입니까?

답변

10

예, 매우 큰 차이가 있습니다.

window.onload = stuff(); 것이다 전화stuff 기능과 onload 속성에 반환 값을 할당합니다.

window.onload = stuff;onload 속성에 stuff 기능을 할당합니다. 브라우저는 load 이벤트가 발생할 때 해당 기능을 호출합니다. 함수는 객체입니다. 이라는 이름으로 참조 할 때을 호출하면 해당 객체를 참조하게됩니다. 이것은 당신이 말한 "함수 포인터"와 유사합니다.

+0

그래서 당신은 행동이 파이썬과 동일한 지, 말을하는지? –

+1

@MorganWilde : 파이썬을 잘 말할 수는 없지만, 당신이 묘사 한 것으로부터 나는 그렇게 믿습니다. –

0

올바른 방법은 다음과 같습니다

window.onload = xxxx; 

트리플 엑스는 함수해야합니다.

첫 번째 :

var fn = function() { 
    alert("abc"); 
} 

window.onload = fn; 

다른 하나

var fn = function() { 
    var abc = "abc"; 
    return function() { 
     alert(abc); 
    } 
} 
window.onload = fn(); 
+0

네, 맞습니다! – Andy12530