1. 程式人生 > 實用技巧 >javascript 判斷型別 開發中常用兩個方法

javascript 判斷型別 開發中常用兩個方法

1.使用 toString() 檢測物件型別(開發中常用):

let Type = (function () {
        let type = {};
        let typeArr = ['String', 'Object', 'Number', 'Array', 'Undefined', 'Function', 'Null', 'Symbol', 'Boolean', 'RegExp', 'BigInt'];
        for (let i = 0; i < typeArr.length; i++) {
            (function (name) {
                type['is' + name] = function (obj) {
                    return Object.prototype.toString.call(obj) === '[object ' + name + ']'
                }
            })(typeArr[i])
        }
        return type
    })()
    let s = true
    console.log(Type.isBoolean(s)) // true
    console.log(Type.isRegExp(/22/)) // true

除了能檢測ECMAScript規定的八種資料型別(七種原始型別,Boolean,Null,Undefined,Number,BigInt,String,Symbol,一種複合型別Object)之外,還能檢測出正則表示式RegExp,Function這兩種型別,基本上能滿足開發中的判斷資料型別需求。

// 缺點就是NAN被檢測為了一個數字, 可以用全域性函式 isNaN 來替換判斷 NaN 型別
console.log(Object.prototype.toString.call(NaN)) //[object Number]

2.Object.is() 方法判斷兩個值是否為同一個值。


另外== 和 === 相等運算子也是常用來判斷值是否相等的一個方法,Object.is 是為了解決這運算子的一些缺點誕生的,詳情見如下

參考文件:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/is
toString() 方法返回一個表示該物件的字串
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
判斷型別文章
https://www.cnblogs.com/tylerdonet/p/11852391.html