• <tbody id="9je1r"></tbody><tbody id="9je1r"><acronym id="9je1r"><rp id="9je1r"></rp></acronym></tbody>
      • <acronym id="9je1r"><acronym id="9je1r"><rp id="9je1r"></rp></acronym></acronym>

        亚洲无码Aⅴ,视频1页精品,欧美系列一区二区,曰韩色999

        JS 中對(duì)變量類型的判斷

        2020/11/25 18:01:51   閱讀:5696    發(fā)布者:5696

        1. 一般簡(jiǎn)單的使用 typeof 或 instanceof 檢測(cè)(這兩種檢測(cè)的不完全準(zhǔn)確)

                 2. 完全準(zhǔn)確的使用 原生js中的 Object.prototype.toString.call  或 jquery中的 $.type 檢測(cè)

        在 JS 中,有 5 種基本數(shù)據(jù)類型和 1 種復(fù)雜數(shù)據(jù)類型,基本數(shù)據(jù)類型有:Undefined, Null, Boolean, Number和String;復(fù)雜數(shù)據(jù)類型是Object,Object中還細(xì)分了很多具體的類型,比如:Array, Function, Date等等。今天我們就來(lái)探討一下,使用什么方法判斷一個(gè)出一個(gè)變量的類型。

        變量常用的類型:

        var num  = 123;

        var str  = 'abcdef';

        var bool = true;

        var arr  = [1, 2, 3, 4];

        var json = {name:'wenzi', age:25};

        var func = function(){ console.log('this is function'); }

        var und  = undefined;

        var nul  = null;

        var date = new Date();

        var reg  = /^[a-zA-Z]{5,20}$/;

        var error= new Error();


        1. 使用typeof檢測(cè)

        我們平時(shí)用的最多的就是用typeof檢測(cè)變量類型了。這次,我們也使用typeof檢測(cè)變量的類型:
        console.log(

            typeof num,

            typeof str,

            typeof bool,

            typeof arr,

            typeof json,

            typeof func,

            typeof und,

            typeof nul,

            typeof date,

            typeof reg,

            typeof error

        );

        // number string boolean object object function undefined object object object object


        從輸出的結(jié)果來(lái)看,arr, json, nul, date, reg, error 全部被檢測(cè)為object類型,其他的變量能夠被正確檢測(cè)出來(lái)。當(dāng)需要變量是否是number, string, boolean, function, undefined, json類型時(shí),可以使用typeof進(jìn)行判斷。其他變量是判斷不出類型的,包括null。

         

        還有,typeof是區(qū)分不出array和json類型的。因?yàn)槭褂胻ypeof這個(gè)變量時(shí),array和json類型輸出的都是object。


        2. 使用instanceof檢測(cè)

         

        在 JavaScript 中,判斷一個(gè)變量的類型嘗嘗會(huì)用 typeof 運(yùn)算符,在使用 typeof 運(yùn)算符時(shí)采用引用類型存儲(chǔ)值會(huì)出現(xiàn)一個(gè)問(wèn)題,無(wú)論引用的是什么類型的對(duì)象,它都返回 “object”。ECMAScript 引入了另一個(gè) Java 運(yùn)算符 instanceof 來(lái)解決這個(gè)問(wèn)題。instanceof 運(yùn)算符與 typeof 運(yùn)算符相似,用于識(shí)別正在處理的對(duì)象的類型。與 typeof 方法不同的是,instanceof 方法要求開(kāi)發(fā)者明確地確認(rèn)對(duì)象為某特定類型。例如:

        function Person(){
        }

        var Tom = new Person();

        console.log(Tom instanceof Person); // true

        instanceof還能檢測(cè)出多層繼承的關(guān)系。

        3. 使用constructor檢測(cè)

        在使用instanceof檢測(cè)變量類型時(shí),我們是檢測(cè)不到number, 'string', bool的類型的。因此,我們需要換一種方式來(lái)解決這個(gè)問(wèn)題。

        constructor本來(lái)是原型對(duì)象上的屬性,指向構(gòu)造函數(shù)。但是根據(jù)實(shí)例對(duì)象尋找屬性的順序,若實(shí)例對(duì)象上沒(méi)有實(shí)例屬性或方法時(shí),就去原型鏈上尋找,因此,實(shí)例對(duì)象也是能使用constructor屬性的。

         
        亚洲无码Aⅴ,视频1页精品,欧美系列一区二区,曰韩色999
            • <tbody id="9je1r"></tbody><tbody id="9je1r"><acronym id="9je1r"><rp id="9je1r"></rp></acronym></tbody>
            • <acronym id="9je1r"><acronym id="9je1r"><rp id="9je1r"></rp></acronym></acronym>
              砀山县| 西青区| 五寨县| 綦江县| 古蔺县| 元阳县| 旌德县| 嵊泗县| 民乐县| 沈丘县| 白水县| 即墨市| 迭部县| 金寨县| 利津县| 措勤县| 汕头市| 晋江市| 大厂| 永安市| 贞丰县| 普兰店市| 浏阳市| 清原| 绥宁县| 七台河市| 六枝特区| 南皮县| 阿拉善左旗| 麻栗坡县| 双城市| 三河市| 托克托县| 自贡市| 确山县| 株洲市| 吴忠市| 松潘县| 江川县| 百色市| 芒康县|