다음과 같습니다
var a = 3; >
실제로는 두 단계가 있습니다.
1 a를 정의되지 않은 상태로 초기화
2 값 할당 3
따라서 "믿을 수 없는" 현상이 있을 수 있습니다. 즉, JS의 변수는 먼저 사용한 다음 선언합니다. 이는 Java에서는 허용되지 않습니다.
int a = 1;
컴파일이 실패했습니다. 하지만 JS는 다음과 같이 할 수 있습니다.
var a ;
정의되지 않았지만 오류가 보고되지 않습니다. 이는 a가 실제로 선언되었으며 정의되지 않았음을 보여줍니다.
"var a" 없이 "alert(a)"만 있는 경우 JS 엔진은 오류를 보고합니다.
FF는 다음과 같습니다
먼저 사용하고 선언해도 되지만, 이렇게 하면 할당 효과가 상실됩니다. 다음과 같습니다
alert(a)
var a = 1;
이번에는 출력이 1이 아닌 여전히 정의되지 않았습니다.
또 다른 예
Alert(' a' in window); // true
var a;
alert 후에 코드가 공식적으로 작성되었지만 엔진은 여전히 자동으로 var 선언을 먼저 처리합니다. 최종 출력은 true입니다.
이것을 이해하고 나면 다음 코드의 결과를 이해하는 것은 어렵지 않습니다
if (!("a" in window)) {
var a = 1
}
alert(a); 🎜>