typeof
是 JavaScript 中的一个一元操作符,用于检测变量的数据类型。它返回一个表示变量类型的字符串。typeof
可以应用于任何 JavaScript 变量,包括基本类型(如 string、number、boolean、undefined)和引用类型(如 object、function)。
typeof
操作符的基本语法如下:
typeof variable
它会返回以下字符串之一:
"undefined"
—— 如果变量未定义。"boolean"
—— 如果变量是布尔值。"number"
—— 如果变量是数字。"string"
—— 如果变量是字符串。"bigint"
—— 如果变量是 BigInt 类型。"symbol"
—— 如果变量是 Symbol 类型。"function"
—— 如果变量是函数(在 JavaScript 中,函数也是对象)。"object"
—— 如果变量是对象(包括 null,这是一个历史遗留问题)。"undefined"
—— 如果变量未声明。typeof
的优势在于它的简洁性和快速检测变量类型的能力。这对于编写健壮的代码和调试非常有用。
typeof
可以检测以下类型:
undefined
boolean
number
string
bigint
symbol
function
object
typeof
常用于以下场景:
let num = 123;
console.log(typeof num); // 输出: "number"
let str = "Hello, world!";
console.log(typeof str); // 输出: "string"
let bool = true;
console.log(typeof bool); // 输出: "boolean"
let nul = null;
console.log(typeof nul); // 输出: "object" —— 注意这是一个历史遗留问题
let und;
console.log(typeof und); // 输出: "undefined"
let sym = Symbol("foo");
console.log(typeof sym); // 输出: "symbol"
let obj = { key: "value" };
console.log(typeof obj); // 输出: "object"
let func = function() {};
console.log(typeof func); // 输出: "function"
问题:typeof null
返回 "object"
,这是一个历史遗留问题,可能会导致混淆。
解决方法:使用严格相等运算符 ===
来检查 null
:
let variable = null;
if (variable === null) {
console.log("The variable is null");
}
问题:typeof
无法区分不同的对象类型。
解决方法:使用 instanceof
操作符或者检查对象的构造函数来获取更精确的对象类型信息:
let arr = [];
console.log(arr instanceof Array); // 输出: true
console.log(arr.constructor === Array); // 输出: true
通过这些方法,可以更准确地检测和处理 JavaScript 中的各种数据类型。
云+社区技术沙龙[第4期]
企业创新在线学堂
TVP分享会
Techo Youth
高校公开课
TVP技术夜未眠
云+社区沙龙online第6期[开源之道]
实战低代码公开课直播专栏
云原生正发声
腾讯数字政务云端系列直播
领取专属 10元无门槛券
手把手带您无忧上云