> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 빈 공간을 나타내는 undefined와 null의 차이점과 사용법

JavaScript에서 빈 공간을 나타내는 undefined와 null의 차이점과 사용법

黄舟
풀어 주다: 2017-02-28 14:50:15
원래의
1923명이 탐색했습니다.

JavaScript를 처음 배우기 시작했을 때

undefed가 꽤 새롭다고 느꼈습니다
다른 언어에는 없었기 때문입니다
. 비어 있음을 의미하는 null도 있었습니다
많은 학생들이 undefined와 null의 차이를 구분하지 못하는 것 같아요
오늘은 JavaScript에서 비어 있음을 의미하는 undefound와 null의 차이점을 정리하겠습니다

비슷한

정의되지 않음과 null은 모두 JavaScript입니다.
의 기본 유형은 각각 하나의 유형 값만 가지며, 정의되지 않고 null이며 해당 유형과 이름이 동일합니다.
일반적으로 실제로는 이 두 값 사이에는 차이가 없습니다 ​​​​

var foo = undefined;
로그인 후 복사
var foo = null;
로그인 후 복사

그리고 표준에서는

console.log(null == undefined) // true
로그인 후 복사

(그러나 null !== undefined)

는 부울 값으로 변환되어 false

if(!undefined){
    console.log(1);//1}if(!null){
    console.log(1);//1}
로그인 후 복사

차이

그러나 실제로는 차이가 있습니다
이 코드 줄을 먼저 살펴보겠습니다

console.log(undefined in window);// trueconsole.log(null in window);// false
로그인 후 복사

이것이 차이점입니다
null은 JavaScript의 키워드
이고 undefound는 window의 특수 속성입니다(NaN 및 Infinity와 동일)
ES5 undefed는 읽기 전용 속성이 되지만 여전히 다음과 같은 불합리한 사항이 있습니다

function fn(){
    var undefined = 1;// 注意:前方高能
    console.log(undefined);// 1}
fn();
로그인 후 복사

보세요, unundefined는 키워드가 아니기 때문에 지역 변수에서 사용할 수 있습니다. 선언은 undefine(말문이 없음)
Strict 모드에 있더라도

function fn(){    "use strict";    var undefined = 1;
    console.log(undefined);// 1}
fn();
로그인 후 복사

이렇게 터무니없는 코드를 작성하면 안 됩니다.

수학적 연산을 수행할 때 차이점이 있습니다

console.log(undefined + 1); //NaNconsole.log(null + 1); //1
로그인 후 복사

정의되지 않은 연산은 NaN
으로 변환되고 null은 0으로 변환됩니다

History

JavaScript에는 null을 나타내는 두 개의 값이 있다는 것이 이해가 됩니다
js 아버지인 Brendan Eich는 원래 Java처럼 null만 사용하여 설계했습니다
. 그러나 그는 js에 두 개의 기본 값과 참조가 있다고 생각했습니다. ​​
값을 사용하고 이상한 것을 표현하기 위해 객체를 사용typeof null === 'object'하고 null 변환 숫자 0 때문에 많은 버그를 찾기가 어렵습니다
그래서 그는 정의되지 않은

사용법

js의 아버지의 디자인에 따르면

정의되지 않은 값은 누락된 값을 의미합니다
null은 빈 객체를 의미합니다
하지만 지금은 이렇게 사용하지 않습니다

이해할 수 있습니다 이런 식으로

undefound는 변수가 초기화되지 않았으며 값이 없음을 의미합니다
null은 변수가 초기화되었고 값이 "null 값"임을 의미합니다.

undefine은 js에서 사용됩니다. 그리고 우리는 null을 사용합니다

이 문장을 이해할 수 있을지 모르겠습니다
예를 들어 이런 상황에서는

  • 변수를 선언하고, 엔진은 함수를 미리 컴파일하는 동안 정의되지 않은var a;

  • 기본값을 할당하며 반환 값이 없으면 기본값은 정의되지 않습니다function a(){}

  • 존재하지 않는 개체 속성에 액세스합니다. 기본값은 정의되지 않습니다.var obj = {};obj.a;

  • 실제 매개변수가 지정되지 않으며, 기본 매개변수 값이 정의되지 않습니다var a = function(a){};a();

  • ...

이것은 시스템에서 우리에게 제공하는 정의되지 않은 기본값으로, js에서 사용하는

이며 우리가 원하는 것입니다. to use is null
예:

  • 빈 개체 만들기var obj = Object.create(null);

  • 이벤트 바인딩 해제demo.onclick = null;

  • 요약
마지막으로 모든 사람을 위한 요약하자면,

정의되지 않음은 창의 특수 속성이며 식별자이며 값을 할당할 수 있습니다. ; null은 식별자가 아닌 특수 키워드이며 값을 할당할 수 없습니다.

undefine == null –> undefine === null –> 🎜>

부울로 변환하면 정의되지 않음과 null은 모두 거짓입니다
  • 정의되지 않음은 값이 없음을 의미하고, null은 빈 값을 의미합니다
  • 정의되지 않음 대신 비어 있음을 나타내려면 null을 사용
  • 정의되지 않음을 다시 정의하지 마세요
  • 위의 내용은 정의되지 않았으며 JavaScript에서 비어 있음을 나타내는 null입니다. 차이점과 사용법, 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 주목하세요!
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿