在JavaScript中,可以使用typeof
操作符来获取变量的类型。typeof
操作符返回一个表示未经计算的操作数类型的字符串。
以下是一些示例代码,展示了如何使用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 obj = { key: "value" };
console.log(typeof obj); // 输出 "object"
let arr = [1, 2, 3];
console.log(typeof arr); // 输出 "object",注意数组也是对象
let func = function() {};
console.log(typeof func); // 输出 "function"
let undef;
console.log(typeof undef); // 输出 "undefined"
let nul = null;
console.log(typeof nul); // 输出 "object",这是一个历史悠久的JavaScript bug
let symbol = Symbol("sym");
console.log(typeof symbol); // 输出 "symbol"
let bigint = BigInt(12345678901234567890n);
console.log(typeof bigint); // 输出 "bigint"
需要注意的是,typeof
对于null
值会返回"object"
,这是一个在JavaScript中广为人知的bug,自语言诞生以来就一直存在,但由于向后兼容的原因,一直没有被修复。
此外,对于数组和普通对象,typeof
都会返回"object"
,如果需要区分它们,可以使用Array.isArray()
方法或者Object.prototype.toString.call()
方法。
let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // 输出 true
let obj = { key: "value" };
console.log(Object.prototype.toString.call(obj) === "[object Object]"); // 输出 true
这些方法可以帮助我们更准确地判断变量的具体类型。