JavaScript运算符包括比较和逻辑两类:===严格比较值与类型,==会类型转换;&&和||返回最后一个求值操作数,!转布尔取反;应避免==、注意对象引用比较及逻辑运算符的短路特性。
JavaScript 运算符是执行特定操作的符号,用于对变量和值进行计算、比较或逻辑判断。其中,比较运算符(如 ==、===、>)用于判断两个值的关系,逻辑运算符(如 &&、||、!)用于组合或反转布尔条件。
比较运算符返回布尔值(true 或 false),常用于 if、while 等条件语句中:
===(严格相等):同时比较值和类型,推荐优先使用。例如:5 === "5" → false
==(抽象相等):会尝试类型转换后再比较,易出错。例如:0 == false → true,但 0 === false → false
!== 和 != 是对应不等的反向形式,同样建议用 !==
>、、>=、 按数值大小比较;字符串则按 Unicode 编码顺序逐字符比较(如 "apple" → true)
逻辑运算符操作布尔值,但返回的不一定是布尔值——它们会返回**最后一个被求值的操作数**(短路特性):
&&(与):从左到右,遇到第一个“假值”(falsy,如 false、0、""、null、undefined、NaN)就停止并返回它;否则返回最后一个值。例如:"" && 5 → "";3 && "hello" → "hello"
||(或):从左到右,遇到第一个“真值”(truthy)就停止并返回它;否则返回最后一个值。例如:null || "default" → "default";0 || false || 7 → 7
!(非):将操作数转为布尔值后取反,!! 常用于强制转布尔。例如:!0 → true;!!"hello" → true
实际开发中,几个关键细节容易被忽略:
== 比较不同类型的值,尤其涉及 null、undefined、0、""、false 时行为复杂(如 null == undefined 为 true,但 null == 0 为 false)=== 比较时,比的是引用而非内容。例如:[1,2] === [1,2] → false
const name = user.name || "anonymous")或条件执行(isAdmin && showAdminPanel())中很实用掌握这些运算符的核心行为,比死记规则更重要——关键是理解“何时求值”、“返回什么”以及“类型如何影响结果”。