在JavaScript中,获取变量类型的方法有多种,以下是一些常用的方法:
typeof
是一个一元操作符,用于检测变量的数据类型。它返回一个表示变量类型的字符串。[[Class]]
属性,从而确定对象的类型。number
, string
, boolean
, undefined
, function
)。null
, array
, date
等复杂类型。typeof
操作符let num = 123;
console.log(typeof num); // 输出: "number"
let str = "Hello";
console.log(typeof str); // 输出: "string"
let bool = true;
console.log(typeof bool); // 输出: "boolean"
let undef;
console.log(typeof undef); // 输出: "undefined"
let func = function() {};
console.log(typeof func); // 输出: "function"
let obj = {};
console.log(typeof obj); // 输出: "object" (注意: null 也会返回 "object")
let nul = null;
console.log(typeof nul); // 输出: "object" (这是一个历史遗留问题)
Object.prototype.toString.call()
方法let arr = [1, 2, 3];
console.log(Object.prototype.toString.call(arr)); // 输出: "[object Array]"
let date = new Date();
console.log(Object.prototype.toString.call(date)); // 输出: "[object Date]"
let nul = null;
console.log(Object.prototype.toString.call(nul)); // 输出: "[object Null]"
let obj = {};
console.log(Object.prototype.toString.call(obj)); // 输出: "[object Object]"
typeof null
返回 "object"这是因为在JavaScript最初的实现中,值是由一个类型标签和实际数据组成的。null
被表示为空指针(0),而所有对象类型在底层都是以空指针开始的,因此 typeof null
被错误地认为是 "object"。
解决方法:
使用 Object.prototype.toString.call()
方法来准确判断 null
:
let nul = null;
console.log(Object.prototype.toString.call(nul) === '[object Null]'); // 输出: true
typeof
。Object.prototype.toString.call()
来获取更准确的类型信息。通过这些方法,你可以有效地在JavaScript中检测和处理不同类型的变量。
领取专属 10元无门槛券
手把手带您无忧上云