JavaScript运算符优先级与相等性比较详解

作者:青柠时间:2026-10-27 08:33:28浏览:551

本文详细解析JavaScript运算符优先级规则,通过圆括号改变求值顺序的示例说明执行流程。重点对比===与==操作符在类型不同时的处理机制,涵盖数值、字符串、布尔值及对象的转换逻辑,帮助开发者避免类型隐式转换陷阱。

JavaScript运算符优先级概述

JavaScript中的运算符优先级是一套规则,用于在计算表达式时控制运算符执行的顺序。具有较高优先级的运算符先于较低优先级的运算符执行,例如乘法的执行先于加法。下表按从最高到最低的优先级列出JavaScript运算符,具有相同优先级的运算符按从左至右的顺序求值。

运算符优先级详细列表

运算符 描述
. [] () 字段访问、数组下标、函数调用以及表达式分组
++ -- - ~ ! delete new typeof void 一元运算符、返回数据类型、对象创建、未定义值
* / % 乘法、除法、取模
+ - + 加法、减法、字符串连接
<< >> >>> 移位
< <= > >= instanceof 小于、小于等于、大于、大于等于、instanceof
== != === !== 等于、不等于、严格相等、非严格相等
& 按位与
^ 按位异或
| 按位或
&& 逻辑与
|| 逻辑或
?: 条件
= oP= 赋值、运算赋值
, 多重求值

使用圆括号改变求值顺序

圆括号可用来改变运算符优先级所决定的求值顺序。这意味着圆括号中的表达式应在其用于表达式的其余部分之前全部被求值。

代码如下:

z = 78 * (96 + 3 + 45)

在该表达式中有五个运算符: =, *, (), +, 以及另一个 +。根据运算符优先级的规则,它们将按下面的顺序求值: (), +, +, *, =。

首先对圆括号内的表达式求值。圆括号中有两个加法运算符。因为两个加法运算符具有相同的优先级,从左到右求值。先将 96 和 3 相加,然后将其和与 45 相加,得到的结果为 144。然后是乘法运算。78 乘以 144,得到结果为 11232。最后是赋值运算。将 11232 赋给 z。

严格相等与宽松比较机制

===操作符:要是两个值类型不同,返回false;要是两个值都是number类型,并且数值相同,返回true;要是两个值都是string,并且两个值的String内容相同,返回true;要是两个值都是true或者都是false,返回true;要是两个值都是指向相同的Object,Array或者function,返回true;要是两个值都是null或者都是undefined,返回true。==操作符:如果两个值具有相同类型,会进行===比较,返回===的比较值;如果两个值不具有相同类型,也有可能返回true。如果一个值是null另一个值是undefined,返回true;如果一个值是string另一个是number,会把string转换成number再进行比较;如果一个值是true,会把它转成1再比较,false会转成0;如果一个值是Object,另一个是number或者string,会把Object利用valueOf()或者toString()转换成原始类型再进行比较。

详细出处参考:https://www.jb51.net/article/17542.htm

作者最新文章