동일한 식별자에 대해서는 var와 function으로 선언하세요. 결국 그것은 무엇입니까?
var a; // 식별자가 a인 변수 선언
function a() { // 식별자가 a인 함수 선언
}
alert(typeof a);
무엇인가요? 표시된 것은 "함수"입니다. 즉, 함수가 var보다 우선순위가 높습니다.
이것이 코드가 순차적으로 실행되는 이유, 즉 나중에 실행되는 함수가 a를 덮어쓰는 이유라고 생각하는 사람들도 있습니다. 좋아요, 바꿔보세요.
function a() {
}
var a;
alert(typeof a);
결과에는 여전히 "정의되지 않음" 대신 "함수"가 표시됩니다. 즉, 함수 선언이 변수 선언보다 우선합니다.
a를 선언할 때 코드를 약간 수정하고 값을 할당합니다.
function a() {
}
var a = 1; // 참고하세요
alert(typeof a);
이때 "숫자"는 표시되지만 표시되지는 않습니다. "function", 이는
function a() {
}
var a;
a = 1; // 참고
alert(typeof a);
즉, "var a = 1"을 두 단계로 나눕니다. a는 재할당되었으므로 당연히 마지막 값입니다.