왜 어떤 프로 그래 밍 규범 은 undefined 대신 void 0 을 요구 합 니까?

2157 단어 전단자바 script
Undefined
Undefined 형식 은 정의 되 지 않 았 음 을 표시 합 니 다. 형식 은 하나의 값 만 있 고 undefined 입 니 다.
모든 변 수 는 할당 되 기 전에 undefined 입 니 다. 그러나 자바 script 엔진 에서 undefined 는 키워드 가 아 닌 변수 입 니 다.오래된 브 라 우 저 에서 전역 변수 undefined 를 다시 쓸 수 있 습 니 다.
/**
 * IE8    
 */
var value;
console.log(value === undefined); //true
//    undefined
undefined = 'hi';
console.log(value === undefined); //false

위의 예 에서 알 수 있 듯 이 오래된 브 라 우 저 에서 undefined 가 비 undefined 값 으로 재 작성 되면 변수 가 할당 되 었 는 지 정확하게 검사 할 수 없습니다.
이 문 제 는 ECMAScript 5 에서 복구 되 었 으 며, ECMAScript 5 규범 을 실현 한 브 라 우 저 에서 다음 코드 를 실행 합 니 다.
/**
 * Chrome    
 */ 
Object.getOwnPropertyDescriptor(window, undefined); //    :{"writable":false,"enumerable":false,"configurable":false}

위의 실행 결 과 를 통 해 알 수 있 듯 이 전역 변수 undefined 의 writable 속성 은 false, 즉 쓸 수 없습니다.
void
void 연산 자 는 주어진 표현 식 에 대해 값 을 구 합 니 다. 계산 결 과 를 무시 하고 undefined 로 되 돌아 갑 니 다.
var value1 = 'hi';
console.log(value1); //"hi"

var value2 = void 'hi';
console.log(value2); //undefined

따라서 우 리 는 이 점 을 이용 하여 예상 되 는 undefined 값 을 정확하게 얻 을 수 있다.
var value;
console.log(value === void 0); //true
console.log(value === void(0)); //true

끝나다
위의 테스트 결 과 를 보면 일부 프로 그래 밍 규범 은 undefined 대신 void 0 을 사용 해 야 하 는데 주요 원인 은 undefined 값 이 재 작성 되 는 위험 을 피하 기 때문이다.현대 브 라 우 저 에 서 는 전역 변수 undefined 를 쓸 수 없습니다. 오래된 브 라 우 저 를 호 환 하 는 것 을 고려 하지 않 는 다 면 이 문 제 는 너무 신경 쓰 지 않 아 도 됩 니 다.
넓히다
많은 JavaScript 압축 도 구 는 undefined 의 이 문 제 를 처리 하 는 데 도움 을 주 었 습 니 다.
/**
 *   
 */
var value;
console.log(value === undefined);
/**
 *    uglify   
 */
"use strict";var value;console.log(void 0===value);

레 퍼 런 스
  • 극 객 시간
  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/void
  • https://segmentfault.com/a/1190000007015757

  • 다음으로 전송:https://www.cnblogs.com/xiaoyucoding/p/11526013.html

    좋은 웹페이지 즐겨찾기