因為JS的arguments是弱類型的。所以多數場合下,對於arguments進行判斷,然后針對不同類型進行不同處理(類似Java的重載)。
JS語言中數據類型共有6種,5種基本數據類型:Unfined, Null, Boolean, Number, String,還有特殊類型Object。
判斷方法有很多,這里列舉三個: typeof, instanceof, Object.prototype.toString.call()。下面分別說明其用途:
1. typeof
用的最頻繁的一種判斷方式,適用於基本類型和函數判斷。不適用於Object類型的進一步判斷。
補充:
- 當變量不存在時,if (variable) 會拋出異常,而 typeof variable === 'undefined'則適用
- typeof NaN 為 "number",針對NaN需要進一步結合 isNaN()來判斷
2. instanceof
a instanceof b: 判斷b是否是a的原型,返回 true / false
適用於引用類型的進一步判斷。
var a = []; //針對array的檢測 console.log(a instanceof Array); //true console.log(a instanceof Object); //true,因為Array是Object子集
進一步的了解,可以參考https://www.cnblogs.com/Trr-984688199/p/6180040.html。
3. Object.prototype.toString.call()
var a = [1, 2]; Object.prototype.toString.call(a); // "[object Array]" a = {}; Object.prototype.toString.call(a); // "[object Object]" a = "123"; Object.prototype.toString.call(a); // "[object String]" a = 1; Object.prototype.toString.call(a); // "[object Number]" a = true; Object.prototype.toString.call(a); // "[object Boolean]" a = function() {}; Object.prototype.toString.call(a); // "[object Function]"
4. 其他
- Array.isArray: 用於確定傳遞的值是否是一個
Array, 返回true / false