JavaScript(8202)—Null vs.Unidefined

2735 ワード

JavaScript(8202)—Null vs.Unidefined
初心者はよくnullundefinedの違いが分かりません.本論文はnullundefinedの違いを深く分析します.nullは何ですかnullについて2つの把握が必要です.
  • nullは、
  • である.
  • nullは、割り当てられた
  • である.
    以下はDemoです.a変数にnullを割り当てます.
    let a = null;
    console.log(a);
    // null
    undefinedは何ですかundefinedは、通常、一つの変数が単に宣言されたことを表しているが、初期化されていない.デモ:
    let b;
    console.log(b);
    // undefined
    また、特別に変数にundefinedを割り当てることもできますが、通常のシーンではこのようには使えません.
    let c = undefined;
    console.log(c);
    // undefined
    もう一つは、訪問先に存在しない属性がある場合、undefinedを得ることです.
    var d = {};
    console.log(d.fake);
    // undefined
    null&undefinedの同じ点
    JS言語には6つのfalsyの値があり、nullundefinedは6つのfalsyの値のうちの2つである.
    falsy値:
  • false
  • (ゼロ)
  • "(empty string)
  • null
  • undefined
  • NaN(Not A Number)
  • 残りの全ての値はtruthyである.
    また、JS言語には6つの元のデータタイプがあり、nullおよびundefinedはその中の2つの元のタイプの値である.元のデータタイプ:
  • Boolean
  • Null
  • Udefined
  • Number
  • String
  • Symbol
  • 上記の六種類のうちでないものは全部引用タイプです.しかし、面白いことに、typeofを使用してnullを検証すると、戻ってきたのはobjectであり、これは最初に導入されたjsのbugであると簡単に理解できる.
    let a = null;
    let b;
    console.log(typeof a);
    // object
    console.log(typeof b);
    // undefined
    null!==undefined
    上記の説明を通して、nullundefinedは違っているとぼんやりと感じたかもしれませんが、とても似ています.したがって、null !== undefinednull == undefined.
    ?nullundefinedとは異なる実際のアプリケーションシーンがありますか?
    無駄話が多すぎて、本当に使えるところは、 が一つになるほど、s 6のデフォルトパラメータがあります.
    let logHi = (str = 'hi') => {
      console.log(str);
    }
    /*     */
    logHi();
    // hi
    
    /*    */
    logHi('bye');
    // bye
    
    /*     */
    logHi(undefined);
    // hi
    
    /*null        */
    logHi(null);
    // null
    上記のコードについて、皆さんは私と一緒にs 5のデフォルトパラメータの書き方を思い出します.
    let logHi = (str) => {
      str = str || 'hi';
      console.log(str);
    }
    
    logHi('bye');
    // bye
    
    logHi()
    // hi
    logHi(undefined);
    // hi
    logHi(null);
    // hi
    Summary
  • nullは、空
  • を表すために与えられた値です.
  • undefinedは、通常、変数が宣言されていることを表しているが、初期化されていない
  • .
  • nullおよびundefinedは、いずれもfalsy
  • である.
  • nullおよびundefinedは元のデータタイプであるが、JS言語のバグはtypeof null = object
  • をもたらす.
  • null !== undefined null == undefined