왜 어떤 프로 그래 밍 규범 은 undefined 대신 void 0 을 요구 합 니까?
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://www.cnblogs.com/xiaoyucoding/p/11526013.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
전단 자동화 워 크 플 로 의 hooks예 를 들 어 우 리 는 git commt 전에 eslint 코드 검사, npm install 전에 프로젝트 의존 도 를 검사 하고 싶 습 니 다.전형 적 인 상황 에서 각종 도 구 는 특정한 동작 이 발생 할 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.