연구 결과 둘 사이에 큰 차이가 있는 것으로 나타났습니다. 영어에서는 둘 사이의 차이점이 무엇인지 모르겠습니다. 연구 결과는 다음과 같습니다.
테스트 os: ubuntu
테스트 브라우저: chrome
테스트 사례 1
console.log(a)
오류 보고 ReferenceError: a가 정의되지 않음
테스트 사례 2
var a
console.log (a)
None 오류가 보고되지만 정의되지 않음이 출력됩니다.
테스트 사례 2
var b = {}
console.log(b.a)
오류가 없습니다. 보고되었지만 정의되지 않음이 출력되었습니다.
테스트 사례 3
function c() {
}
var d = new c()
console.log(d.a)
오류는 보고되지 않지만 정의되지 않음이 표시됩니다
typeof에 대해
위의 테스트에 사용된 모든 개체는 typeof를 사용하여 String("undefine")을 반환합니다.
OR 연산에 대해
var d = a|| 3
오류 a가 정의되지 않음
var a;
var d = a || 3
결과: d==3
var c = 22 || 44
var c = false || 33
c = = 33
if(x) {
}
오류 보고
var x
if(x) {
}
실행되지 않는 경우
요약:
js에는 두 가지 종류의 undefine이 있습니다. typeof가 String("undefine")을 반환하지만
정의된 후 아무런 작업도 수행하지 않습니다. 또는 개체의 정의되지 않은 속성인 경우 작업에 사용할 수 있습니다. undefed 는 완전히 정의되지 않고 배경이 없는 두 번째 유형의 논리 연산
변수로 사용할 수 있습니다(x.a, x에는 속성이 없음). , 그러나 x 얼굴을 제공합니다), 이는 오류 유형이며 typeof 함수
또는 js의 연산을 사용하여 부울 값을 반환하지 않지만 두 조건에 대해 js가 계산한 마지막 값을 반환하지 않는 한 사용할 수 없습니다. 1||2 1은 true이고 2는 계산할 필요가 없으므로 1||2 == 1 a||1 오류
var a|| 1 == 1; 사전을 찾아서 번역했습니다.
정의되지 않음은 다음과 같이 번역될 수 있습니다. 불분명함, 즉 무엇에 사용되는지 알 수 없음
정의되지 않음은 정의되지 않음으로 번역될 수 있음