window.foo
으로 명시 적으로 후자의 경우에는 window
개체 인 foo
속성을 찾고 있습니다. 후자의 경우, foo
이 정의되지 않은 경우, 개발자는 정의되지 않았 음을 알게되고 해석기가 아닌 명확한 오류 경고를 받아야합니다 (첫 번째 경우와 마찬가지로) undefined
으로 설정합니다. ~ 예기치 결과.
Reference Error
: 존재하지 않는 변수를 참조 할 때
오류를 나타냅니다. 선언되지 않은 변수를 역 참조하려고 할 때 ReferenceError가 발생합니다.
대한 추가 정보를 원하시면이 문서를 살펴 보자
참조를 확인할 수없는 것으로 간주됩니다 경우 해당 기본 값 : 기사 위에서 인용
을 정의되지 않음. 따라서 점 앞의 값이 정의되지 않은 경우 속성 참조를 해석 할 수 없습니다. 다음 예제에서는 ReferenceError가 발생하지만 TypeError가 먼저 도착하기 때문에 ReferenceError가 발생하지 않습니다. 이는 속성의 기본 값이 정의되지 않은 유형을 객체로 변환하려고 시도 할 때 TypeError를 던지는 CheckObjectCoercible (ECMA 5 9.10에서 11.2.1까지)의 영향을 받기 때문입니다.
예 : 어느 속성이나 변수는
var foo;
foo.bar; //TypeError (base value, foo, is undefined)
bar.baz; //ReferenceError (bar is unersolvable)
undefined.foo; //TypeError (base value is undefined)
언급 그래서, 해결할 수없는 정의이며 ReferenceError가 발생합니다 :
foo; //ReferenceError
'window.foo'는'var foo'와 동일하지 않습니다. –
@TimDown. 좀 더 자세하게 설명해 주실 수 있습니까? 어쩌면 대답에? – gdoron
@TimDown & @gdoron 좋아요, 그건 약간 진실입니다 - 내가 의미했던 바는 global.foo가 전역 컨텍스트에서 선언 될 때'var foo'와 같습니다. – JKing