ES 규범 학 자 바스 크 립 트 (1): 왜 undefined 는 값 을 부여 할 수 있 고 null 은 안 됩 니까?
다음 코드:
undefined = 123;
null = 123; // :Uncaught Reference Error
첫 번 째 문 구 는 실행 할 수 있 습 니 다. 비록 할당 이 성공 하지 못 했 지만.제2 조 문장 오류.왜 그 럴 까요?
undefined
와 null
는 어떤 차이 가 있 습 니까?문 제 를 해결 하 다
ES 규범 을 읽 은 후에 원래 이런 것 을 발견 했다.
undefined
, NaN
, Infinity
모두 전체 대상 window
의 속성 이다.속성 이 니 값 을 부여 할 수 있 습 니 다.그러나 이 세 가지 속성 은 쓸 수 없 는 속성 이다. 즉, 그들의 내부 특성 [[writable]]
은 false
이기 때문에 할당 이 유효 하지 않다.null
는 글자 의 양 (literal) 으로 정확하게 말 하면 Null 글자 의 양 이 라 고 한다.true
와 false
와 유사 하 다.그것들 은 모두 자 바스 크 립 트 의 보존 자 에 속한다.다시 말 하면 모두 값 입 니 다. 숫자 값 123, 문자열 값 'foobar' 와 마찬가지 로 값 을 부여 할 수 없습니다.좀 더 말 하 다
undefined
하나의 속성 일 뿐 언어의 보존 글자 가 아 닌 이상 변수의 이름 으로 사용 할 수 있 습 니까?물론 가능 합 니 다. undefined
라 는 변수 나 함 수 를 사용자 정의 할 수 있 지만 전체 역할 영역 에 두 지 않도록 주의 하 십시오.예 를 들 어 function foo() {
var undefined = 10;
console.log(undefined);
}
foo(); // 10
Object.getOwnPropertyDescriptor
방법 을 통 해 undefined
이 window
대상 의 읽 기 전용 속성 임 을 증명 할 수 있다. Object.getOwnPropertyDescriptor(window, 'undefined');
/** :Object {value: undefined, writable: false,
enumerable: false, configurable: false} **/
undefined
에 게 할당 하면 잘못 보고 할 수 있다.엄격 한 모드 에서 대상 에 게 읽 기 전용 속성 할당 을 금지 하기 때문이다.null
이런 원시 유형 이 취 할 수 있 는 유일한 값 이 라 고 불리 지만: typeof null; // "object"
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
vue 입문 vue 와 react 와 Angular 의 관계 와 차이vue 의 목 표 는 가능 한 한 간단 한 API 를 통 해 '응답 하 는 데이터 바 인 딩' 과 '조 합 된 보기 구성 요소' 를 실현 하 는 것 입 니 다. 4) vue 와 angular 바 인 딩 은 모두 {{...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.