typeof 是 javascript 语言内置的运算符,而不是一个函数。它用于检测给定变量的数据类型,返回表示该类型的字符串值。

typeof 与 typeof() 的区别是什么
typeof 是一个一元运算符,其优先级高于函数调用。这意味着在代码中写 typeof(x) 时,括号实际上是被当作分组操作符处理的,typeof 只作用于括号内的表达式,而不会将括号本身作为参数传递给某个名为 typeof 的函数。如果尝试调用一个不存在的函数 typeof(),JavaScript 引擎会抛出 ReferenceError。

console.log(typeof "hello"); // 输出: string console.log(typeof (42)); // 输出: number // console.log(typeof()); // 报错: ReferenceError: typeof is not a function
为什么 typeof null 返回 "object"
这是一个历史遗留的 Bug。在 JavaScript 的最初版本中,值的内部表示包含类型标签和实际数据。对象的类型标签是 0,而 null 的值恰好也是全零(即 NULL_PTR)。因此,当 typeof 检查类型标签为 0 时,它错误地将其识别为对象,而不是空值。这个行为被保留下来以维持向后兼容性。

console.log(typeof null); // 输出: object console.log(null === null); // 输出: true console.log(typeof undefined); // 输出: undefined
使用 typeof 检测未声明变量会发生什么
使用 typeof 操作符检查一个从未声明过的变量时,不会抛出 ReferenceError,而是安全地返回字符串 "undefined"。这是 typeof 运算符特有的安全行为,允许开发者在不先进行存在性检查的情况下判断变量是否已定义。
console.log(typeof nonExistentVar); // 输出: undefined // console.log(nonExistentVar); // 报错: ReferenceError
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











