>  기사  >  웹 프론트엔드  >  JavaScript의 변수 선언은 할당보다 먼저 옵니다.

JavaScript의 변수 선언은 할당보다 먼저 옵니다.

高洛峰
高洛峰원래의
2016-11-26 09:18:431161검색

다음과 같이
var a = 3;
실제로는 두 단계가 있습니다.
1 a를 정의되지 않은 상태로 초기화
2 값 3을 할당

따라서 " 믿을 수 없는 일이 일어나는 현상, 즉 JS에서는 변수를 먼저 사용한 후 선언할 수 있다는 것입니다. 이는 Java에서는 허용되지 않습니다.
System.out.println(a);
int a = 1;
컴파일이 실패합니다. 하지만 JS에서는 다음과 같이 할 수 있습니다.
alert(a);
var a;
정의되지 않았지만 오류는 보고되지 않습니다. 이는 a가 실제로 선언되었으며 정의되지 않았음을 보여줍니다.

"var a" 없이 "alert(a)"만 있는 경우 JS 엔진은 오류를 보고합니다.
alert(a);
FF와 같이

JavaScript의 변수 선언은 할당보다 먼저 옵니다.

을 먼저 사용한 후 선언할 수 있지만 이렇게 하면 할당 효과가 잃어버린. 다음과 같습니다
alert(a);
var a = 1;
이번에는 출력이 1이 아닌 여전히 정의되지 않았습니다.

또 다른 예,
alert('a' in window); // true
var a;
alert 이후에 코드가 공식적으로 작성되었지만 엔진은 여전히 ​​var 선언을 자동으로 처리합니다. 첫 번째 . 최종 출력은 true입니다.

이것을 이해하고 나면 다음 코드의 결과를 이해하는 것은 어렵지 않습니다.

if (!("a" in window)) {
var a = 1;
}
경고(a);


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.