값을 할당하지 않고 변수를 선언하면 초기 값은 undefined
입니다.
JavaScript에서 값이 undefined
인지 어떻게 확인합니까?
간단한 대답
최신 브라우저에서는 변수를 안전하게 비교할 수 있습니다. undefined
에 직접 연결 :
어떤 사람들은 undefined
이전 브라우저에서는 다음과 같이 값을 다시 할당 할 수 있었기 때문입니다.
재 할당 후 는 더 이상 변수에 값이 할당되었는지 여부를 올바르게 감지하지 못합니다.
그러나이 동작은 2009 년 ECMAScript 5로 수정되었습니다.
최신 브라우저에서는 더 이상 전역 undefined
값을 다시 할당 할 수 없습니다.
IE8 이상을 지원해야하는 경우 어떻게해야합니까?
일반적으로, 유엔과 직접 비교 정의는 여전히 안전합니다. 애플리케이션이 undefined
의 값을 재 할당 할 실질적인 이유가 없습니다.
Thomas Eding은 설득력있는 비유로이를 입증합니다.
그래도 걱정된다면 전역 undefined
를 덮어 썼더라도 값이 정의되지 않았는지 확인하는 두 가지 방법이 있습니다.
다음을 사용할 수 있습니다. void 연산자를 사용하여 undefined
의 값을 가져옵니다. 이는 전역 window.undefined
값을 덮어 쓴 경우에도 작동합니다.
이 예에서 0은 특별한 의미가 없습니다. 1
또는
. void(anything)
는 항상 undefined
로 평가됩니다.
또는 typeof 연산자를 사용하여 값이 있는지 안전하게 확인할 수 있습니다. 할당되었습니다. 전역 undefined
값과 비교하는 대신 값 유형이 “undefined”인지 확인합니다.
이는 이전 옵션과 약간 다릅니다. name
가 선언되지 않았더라도 typeof
는 여전히 정의되지 않은 것으로 표시됩니다. 선언되지 않은 변수를 undefined
또는 void(0)
와 비교하면 대신 ReferenceError가 발생합니다.
하지만 그렇지 않습니다. void (0) 직접 사용
코드에서 그대로 void(0)
또는 typeof x === "undefined"
를 사용하지 마십시오. 이러한 표현식은 설명이 필요 없으며 다음과 같이 isUndefined 함수로 래핑되어야합니다.
많은 유틸리티 라이브러리에는 이미이 기능이 내장되어 있습니다. 예를 들어 _.isUndefined
함수.