JS Typeof 运算符
JS Typeof 运算符
JavaScript 有三种方法,可以确定一个值到底是什么类型。而我们现在需要接触到的就是 typeof。
基础概念与核心规则
typeof 是 JavaScript 中用于检测变量或表达式数据类型的一元运算符,返回小写字符串形式的类型标识。其行为遵循 ECMAScript 规范中的以下核心规则:
1.基本语法形式
typeof 运算符有两种常见写法,本质上无功能差异,但括号使用会影响优先级判断:
- 无括号写法:直接作用于右侧的单个变量或字面量,类似数学中的负号(如 -5),仅关联最近的右侧操作数
var name = "Alice";
console.log(typeof name); // →"string"
- 带括号写法(易误解):括号是分组运算符,而非函数调用符号。实际等价于 typeof (x),括号仅用于包裹表达式。
console.log(typeof 5 + “5”) // → “number5”(优先级问题)
console.log(typeof (5 + “5”)) // → “string” (先计算表达式)
这段代码主要目的是通过typeof运算符来检查变量或表达式的类型,并将其结果与字符串进行连接,然后通过console.log输出到浏览器的控制台。
- console.log(typeof 5+“5”):在这个例子中,typeof 会优先检测 5
的类型,返回字符串"number",再与字符串 “5” 连接起来。因此,最终的结果是字符串"number5"。 - console.log(typeof (5+“5”)):在JavaScript中,当一个数字和一个字符串进行加法运算时,数字会被转换为字符串,然后进行字符串连接。因此,5 + “5"的结果是字符串"55”。所以typeof “55"会返回字符串"string”。
2.优先级规则
运算符优先级表(节选)
优先级 | 运算符类型 | 示例 |
---|---|---|
17 | 分组运算符 | ( ) |
16 | typeof | typeof x |
15 | 乘法/加法等 | +,*,/ |
2 | 逻辑与/或 | &&~ |
- 场景1:混合算术运算
typeof 5 + "5"
// 等效于 (typeof 5) + "5" → "number5"
typeof (5 + "5")
// 先计算 5 + "5" → "55",再 typeof → "string"
- 场景2:逻辑表达式
typeof x === "undefined" || "default"
// 等效于 (typeof x === "undefined") || "default"
typeof (x === "undefined" ||