Javascript 에서 값 이 undefined 인지 아 닌 지 를 판단 하 는 방법 에 대한 상세 한 설명

2705 단어
머리말
변 수 를 설명 하고 할당 하지 않 은 상태 에서 초기 값 은 undefined 라 는 것 을 잘 알 고 있 을 것 입 니 다.그러나 자바 script 에서 하나의 값 이 undefined 인지 어떻게 검사 합 니까?
간단하게 말 하면 현대 브 라 우 저 에서 안전 한 비교 변수 가 undefined 인지 아 닌 지

if (name === undefined) {...}

일부 사람들 은 undefined 변 수 를 직접 사용 하여 비교 하 는 것 을 반대 합 니 다. 오래된 브 라 우 저 에서 값 을 다시 할당 할 수 있 기 때 문 입 니 다. 예 를 들 어 다음 과 같 습 니 다.

undefined = "test"

다시 할당 되면 undefined 명령 을 사용 하면 변수 가 할당 되 었 는 지 정확하게 검사 할 수 없습니다.
그러나 이 행 위 는 2009 년 ECMAScript 5 에서 복구 됐다.

15.1.1.3 undefined
The value of undefined is undefined (see 8.1). This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.

현대 브 라 우 저 에 서 는 undefined 의 값 을 다시 쓸 수 없습니다.
IE8 이나 더 오래된 브 라 우 저 를 지원 해 야 합 니 다. 어떻게 합 니까?
보통 undefined 명령 은 안전 합 니 다.응용 프로그램 에서 undefined 의 값 을 수정 해 야 할 이유 가 없습니다.
Thomas 의 대답 은 설득력 있 는 추 리 를 사용 해 이 점 을 논증 했다.

I don't hear people telling me that I shouldn't use setTimeout because someone can
        ,      setTimeout,         :

window.setTimeout = function () {
  alert("Got you now!");
};

다음 줄 에서 "다시 할당 할 수 있 습 니 다" raw === undefined false 로 돌아 갑 니 다.
만약 당신 이 여전히 신경 을 쓰 고 있다 면, 하나의 값 이 undefined 인지 확인 할 수 있 는 두 가지 방법 이 있 습 니 다. 비록 전체 window.undefined 가 재 작성 되 었 더 라 도.

if (name === void(0)) {...}

이 예 에서 0 은 아무런 실제 적 인 의미 가 없 으 니 사용 하고 싶 어도 상관없다.1 or function(){} 모두 undefiend 로 계 산 됩 니 다.
다른 선택 은 type: of 연산 자 를 사용 하여 할당 여 부 를 안전하게 검사 할 수 있 습 니 다.전체 undefined 대신 값 의 형식 이 'undefined' 인지 확인 할 수 있 습 니 다.

if (typeof name === "undefined") {...}

두 번 째 선택 은 이전 방안 과 약간 차이 가 있 습 니 다. name 이 밝 혀 지지 않 았 음 에 도 불구 하고 type of 는 undefined 로 돌아 갑 니 다.name 과 void(anything) 를 직접 사용 하면 undefinedor void(0) 이상 한 오 류 를 얻 을 수 있 습 니 다.
하지만 VOID (0) 명령 을 사용 하지 마 세 요.
코드 에 서 는 void (0) 나 ReferenceError 를 사용 하지 않 습 니 다. typeof x === "undefined" 방법 으로 그들 을 포장 할 수 있 습 니 다. 그러면 사용 할 때 더 이상 특별히 설명 하지 않 아 도 됩 니 다.

function isUndefined(value){
  //  undefined,          
  var undefined = void(0);
  return value === undefined;
}

일부 공구 라 이브 러 리 는 이미 이 방법 을 배치 했다. 예 를 들 어 isUndefined function, _.isUndefined 중의 underscore 방법 이다.
총결산
이상 이 이 글 의 전체 내용 입 니 다. 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 었 으 면 좋 겠 습 니 다. 궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.

좋은 웹페이지 즐겨찾기