javascript 判斷型別 開發中常用兩個方法
阿新 • • 發佈:2020-09-01
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