Javascript内蔵タイプ

5327 ワード

JavaScriptは7種類の内蔵タイプがあります.
空の値(null)
未定義(undefined)
ブール値(Boolean)
数字(number)
文字列(string)
オブジェクト(object)
記号(smbol、ES 6追加)
対象以外を総称して「基本タイプ」といいます.
私たちはtypeof演算子で値の種類を確認できます.返したのはタイプの文字列値です.面白いことに、この7つのタイプと彼らの文字列はそれぞれ対応していません.
       
        console.log(typeof undefined === "undefined");      //true
        console.log(typeof true === "boolean");             //true
        console.log(typeof 40 === "number");                //true
        console.log(typeof "40" === "string");              //true
        console.log(typeof {name:"lucky"} === "object");    //true
        console.log(typeof Symbol() === "symbol");          //true

以上の6つのタイプは同じ名前の文字列の値が対応しています.記号はES 6に新しく加入したタイプです.
nullはこの列ではないことに気づくかもしれませんが、それは比較的特殊で、typeofはその処理に問題があります.
         console.log(typeof null === "object");      //true
正しく戻るのは「null」ですが、このバグは昔から、JavaScriptの中にはすでに20年近く存在しています.永遠に修復できないかもしれません.これはウェブシステムに影響を及ぼしていますので、「修復」はもっと多くのバグを生みます.
私たちは複合条件でnull値を検出するタイプが必要です.
        var a = null
        console.log(!a && typeof a === "object");   //true
nullは「false」であり、typeofで検出すると「object」に戻ります.
注:関数もJavaScriptの内蔵タイプです.正確には、それらはすべて「object」のサブタイプです.具体的には、関数は呼び出し可能なオブジェクトです.
JavaScriptは配列をサポートしています.配列も対象ですので、正確にはobjectのサブタイプです.
     console.log(typeof [1,2,3] === "object");  //true