在JavaScript中,typeof
操作符用于检测一个变量或表达式的类型,并返回一个表示该类型的字符串。以下是typeof
操作符可能返回的所有值及其对应的类型:
true
或false
。typeof null
会返回"object")。console.log(typeof undefined); // "undefined"
console.log(typeof true); // "boolean"
console.log(typeof 42); // "number"
console.log(typeof "Hello"); // "string"
console.log(typeof 10n); // "bigint"
console.log(typeof Symbol("sym")); // "symbol"
console.log(typeof function() {}); // "function"
console.log(typeof null); // "object" (注意这是一个历史遗留问题)
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof new Date()); // "object"
console.log(typeof /regex/); // "object"
typeof
对于对象类型的判断比较粗糙,除了函数类型外,其他所有对象类型都会返回"object"。instanceof
操作符或者Object.prototype.toString.call()
方法。typeof null
返回"object"的问题由于typeof null
返回"object"是一个历史遗留问题,没有直接的解决方法。但可以通过以下方式来判断一个变量是否为null
:
if (variable === null) {
// variable 是 null
}
或者使用更通用的方法来判断变量是否为对象(排除null
):
if (typeof variable === "object" && variable !== null) {
// variable 是一个非 null 的对象
}
通过这些方法,可以更准确地判断变量的类型,避免因typeof null
返回"object"而带来的混淆。
领取专属 10元无门槛券
手把手带您无忧上云