javaScriptにおけるnot definedとundefinedとnullの違い

1804 ワード

一.is not definedとundefined
以前はis not definedとundefinedの違いにあまり注意していませんでしたが、毎回簡単に両者を未定義として理解しています.今振り返ってjsの基礎を整理してみます.まず単純な字面の意味から理解してみます.
is not defined:未定義
not defined:未定義、定義がなく、定義できません.
&&&
undefined:不明な
字面の意味からしても、大体両者の違いが分かります.前者は定義がない、つまりないです.後者は明確ではないです.つまり定義があるかどうかは分かりません.
1.not defined
デモを見る:
console.log(a)  
//   :a is not defined      
定義されていない変数は宣言されていない変数です.このような変数は使用中に直接エラーを報告します.
2.undefined
定義されていますが、値なしの変数
demo 2:
var a
console.log(a)  
//    ,  : undefined
一つは定義されていますが、値をundefinedとして付与する変数です.
demo 3:
var p = 1
p = undefined
console.log(p)  
//    ,  : undefined
オブジェクトには割り当てられた属性がありません.
demo 4:
console.log(window.a)
//    ,  : undefined
demo 5:
var a = []
console.log(a.b)
//    ,  : undefined
demo 6:
var a = {}
console.log(a.b)
//    ,  : undefined
戻り値のない関数
demo 7:
function f() {console.log(1)}
console.log(f())
//    ,  : undefined
一つ注意したいのは、not definedとundefinedのtypeof()の値はいずれも「undefined」なので、typeof()では判断できません.
二.undefinedとnull
両者は同じです.if文ではfalseとして解析されます.
demo 8:
!undefined ? console.log('undefined is false') : console.log('undefined is not false')
// undefined is false  
demo 9:
!null? console.log('null is false') : console.log('null is not false')
// null is false
使い方の違い
nullとundefinedはほぼ同義ですが、使い方には若干の違いがあります.
null nullは「対象がない」という意味です.ここに値があるべきではないです.
  • は、関数のパラメータとして、オブジェクトではないことを表しています.
  • は対象プロトタイプチェーンの終点となります.demo 10:
  • Object.getPrototypeof(object.prototype)
    // null
    
    undefinedは上のdemo 2-demo 7のような部分です.