typeof 运算符
typeof 运算符是 JavaScript 中用于确定一个变量或表达式的数据类型的运算符。它返回一个字符串,表示被检查的操作数的数据类型。
- 识别所有值类型
- 识别函数
- 判断是否是引用类型(不可再细分)
js
typeof operand
// operand 可以是任何表达式或变量返回值
typeof 运算符返回的结果是一个表示数据类型的字符串。可能的返回值包括:
"undefined":如果变量未定义。"boolean":布尔类型。"number":数字类型,包括整数和浮点数。"string":字符串类型。"object":对象类型(包括数组和 null)。"function":函数类型。"symbol":符号类型(ES6 引入)。"bigint":大整数类型(ES11 引入)。
js
let a; console.log(typeof a); // "undefined"
const s = Symbol('s'); // "symbol"
console.log(typeof undefined); // "undefined"
console.log(typeof true); // "boolean"
console.log(typeof 42); // "number"
console.log(typeof 'hello'); // "string"
console.log(typeof Symbol()); // "symbol"
console.log(typeof 10n); // "bigint"js
console.log(typeof { x: 100}); // "object"
console.log(typeof [ 'a', 'b' ]); // "object"
console.log(typeof null); // "object" (这是一个历史遗留问题)
console.log(typeof function(){}); // "function"
console.log(typeof console.log) // "function"特殊情况
null:typeof null返回"object",这是一个已知的历史遗留问题,因为在 JavaScript 的初期版本中,null被当作空对象指针处理。数组:
typeof数组返回"object"。要检查一个变量是否是数组,可以使用Array.isArray()方法。jsconsole.log(Array.isArray([])); // true未声明的变量:使用
typeof检查一个未声明的变量不会抛出错误,而是返回"undefined"。jsconsole.log(typeof someUndeclaredVariable); // "undefined"函数:对于函数,
typeof运算符返回"function",这对于区分函数和其他对象非常有用。jsfunction example() {} console.log(typeof example); // "function"
实际应用
typeof 运算符在调试、类型检查和保证代码的稳健性方面非常有用。例如,可以在函数中检查参数类型,以确保传入的值是预期的类型。
js
function add(a, b) {
if (typeof a !== 'number' || typeof b !== 'number') {
throw new Error('Both arguments must be numbers.');
}
return a + b;
}