推荐答案
typeof 操作符可以返回以下几种类型:
"undefined":表示未定义的值。"boolean":表示布尔值 (true或false)。"number":表示数值,包括整数、浮点数、NaN和Infinity。"string":表示字符串。"symbol":表示Symbol类型的值(ES6 新增)。"bigint":表示BigInt类型的值(ES2020 新增)。"object":表示对象、数组和null。"function":表示函数。
对于数组、函数和对象,typeof 的返回值分别是:
- 数组:
"object" - 函数:
"function" - 对象:
"object"
本题详细解读
typeof 是 JavaScript 中一个用于判断数据类型的操作符。它会返回一个字符串,表示操作数的类型。
常见返回类型:
正如“推荐答案”部分所列,typeof 可以准确地识别 undefined、boolean、number、string、symbol、bigint 和 function 这些类型。
特殊情况:
null:typeof null返回"object",这是一个历史遗留的错误,在 JavaScript 中一直存在。 这也是 JavaScript 设计上的一个缺陷,在判断是否为null时,不能单纯依赖typeof。数组和对象:
typeof无法区分数组和普通对象。 它们都被视为"object"类型。 这意味着,如果需要明确区分数组和普通对象,你需要使用其他方法,比如Array.isArray()。函数:
typeof可以准确识别函数,返回"function"。
代码示例:
// www.javascriptcn.com code example
console.log(typeof undefined); // "undefined"
console.log(typeof true); // "boolean"
console.log(typeof 10); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof Symbol()); // "symbol"
console.log(typeof 10n); // "bigint"
console.log(typeof null); // "object"
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof function(){}); // "function"
console.log(typeof new Date()); // "object"重点:
typeof操作符是 JavaScript 中进行类型判断的一个基础工具,但是对于复杂的数据类型,例如null,数组,以及普通对象,需要结合其他方式进行判断。- 在实际开发中,对于需要精确类型判断的情况,应避免过度依赖
typeof, 尤其是当需要区分数组和普通对象时。instanceof和Object.prototype.toString.call()这些方法可能更合适。