Javascript Shorts: null 및 정의되지 않음

안녕하세요 여러분, 이 블로그에서 우리는 자바스크립트의 두 가지 유명한 프리미티브인 null과 undefined에 대해 알아볼 것입니다.

null 이 무엇입니까?



primitive value that represents the intentional absence of any object value. - ECMA - 262


  • javascript는 의도적으로 지정하지 않는 한 null 값을 지정하지 않습니다.
  • null은 존재하는 값이 없음을 나타내므로 거짓 값으로 간주됩니다.

  • 
    let a = null;
    
    console.log(a) // null
    console.log(typeof null) // object
    console.log(!!a) // false
    


    정의되지 않은 것은 무엇입니까?



    primitive when a variable has not been assigned any value. - ECMA - 262



    undefined는 변수를 선언하지만 값을 할당하지 않는 곳입니다.

    let a;
    
    console.log(a) // undefined
    console.log(typeof a) // "undefined"
    


    typeof null이 객체인 이유는 무엇입니까?



    typeof undefined를 기록할 때 undefined를 얻고 typeof null을 기록할 때 object를 얻는 이유를 이해해 봅시다. null는 기본 유형이 Null인 기본 값이므로 유형이 Null가 아닌 이유는 무엇입니까?



    Typeof 연산자는 변수의 유형을 문자열 형식으로 반환합니다.

    typeof null === 'object';
    


    이전 자바스크립트 구현에서는 값이 32비트 단위로 저장됩니다. 처음 세 비트(1 - 3)는 값의 유형을 식별하기 위한 비트이고 나머지 29비트는 실제 값을 포함합니다.

    객체의 유형 태그가 000 인 5개의 유형 태그가 있습니다. 대부분의 플랫폼에서 null은 (0x00) 포인터NULL로 표시되었습니다. 이것은 null0의 유형인 "object” 유형 태그를 가지고 있음을 느슨하게 번역합니다.

    typeof null에 대한 코드에 대한 추가 정보: reference

    MDN 참조

    In the first implementation of JavaScript, JavaScript values were represented as a type tag and a value. The type tag for objects was 0null was represented as the NULL pointer (0x00 in most platforms). Consequently, null had 0 as type tag, hence the typeof return value "object". (reference)

    A fix was proposed for ECMAScript (via an opt-in), but was rejected. It would have resulted in typeof null === 'null'.



    null 및 undefined에 대한 흥미로운 사실:



    둘 다 동등하고 동등하지 않습니다. 그게 무슨 뜻이야?

    console.log(null === undefined) // false
    


    자바스크립트의 엄격한 동등 연산자를 사용하여 확인하면 null과 undefined의 유형이 다르기 때문에 false가 됩니다.

    console.log(null == undefined) // true
    


    언어spec에서는 느슨한 등식 연산자를 사용하여 null과 undefined 사이의 유사성을 확인할 때 이것이 참이어야 한다고 말합니다.


    null과 숫자를 추가하려고 하면 어떻게 됩니까? null은 0으로 변환되어 숫자가 됩니다.

    console.log(1+null) // 1
    



    정의되지 않은 숫자를 추가하려고 하면 NaN.가 표시됩니다.

    console.log( 1 + undefined ) // NaN
    


    결론



    그게 다야. 시간을 내어 블로그 게시물을 읽어주셔서 감사합니다. 게시물이 유용했다면 ❤️를 추가하고 내가 놓친 부분이 있으면 댓글 섹션에 알려주세요.

    블로그 피드백은 환영합니다.

    소셜 링크:

    Showwcase

    참조 및 리소스:


  • null vs undefined
  • loose equality comparison
  • Falsy - MDN docs
  • 좋은 웹페이지 즐겨찾기