javascript运算符需理解四类语义逻辑:+号自动类型切换(数字相加/字符串拼接),%符号继承被除数,浮点数相等用math.abs(a-b)

系统复习 JavaScript 运算符,关键不是死记符号表,而是理清四类核心运算符的语义逻辑、典型陷阱和现代写法。下面按实际开发中的认知顺序组织,帮你真正用得准、避得开、写得稳。
算术与字符串操作:+ 和 % 最容易出错
+ 不只是加法,它会根据操作数类型自动切换行为:两边都是数字才做加法,只要有一边是字符串就转为拼接。比如 1 + 2 + "3" 得到 "33"(先算 1+2=3,再拼 "3"),而 "1" + 2 + 3 得到 "123"(从左到右,一遇字符串全变拼接)。
取模 % 的符号继承被除数,-10 % 3 结果是 -1,不是 2;需要正余数时可用 ((a % b) + b) % b。
浮点数运算别直接比相等,0.1 + 0.2 === 0.3 是 false;判断相等建议用 Math.abs(a - b) 。
比较运算符:无条件优先用 ===,彻底告别 ==
== 会触发隐式类型转换,规则复杂且反直觉:null == undefined 返回 true,但 NaN == NaN 却是 false;'0' == false 也成立。这些都不是 bug,是规范设计,但极易引发隐藏逻辑错误。
=== 要求类型和值同时严格一致,可预测、易调试。唯一例外是 Object.is(),它能正确处理 NaN === NaN 和 -0 === +0 这类边界情况,但日常开发中 === 已足够。
注意:typeof null === 'object' 是历史遗留问题,不是运算符的问题,但常在条件判断中连带暴露。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
逻辑与赋值:理解短路和默认值的现代写法
&& 和 || 的返回值不是布尔型,而是**实际操作数**——这是实现“短路逻辑”的基础:
• a && b:a 为 falsy(如 0、''、null、undefined、NaN、false)时直接返回 a,不执行 b;否则返回 b。
• a || b:a 为 truthy 时返回 a,否则返回 b。
过去常用 name = name || 'default' 设默认值,但 0 或 '' 会被误判为 falsy。ES2020 起应改用空值合并运算符 ??:user.name ?? 'anonymous' 只在 name 为 null 或 undefined 时生效,保留 0 和空字符串。
三元与复合运算符:简洁不等于嵌套,可读性优先
三元运算符 condition ? a : b 适合单层条件赋值,比如 const bgColor = isDark ? '#111' : '#fff'。
多级嵌套(如 score ≥ 90 ? 'A' : score ≥ 80 ? 'B' : 'C')虽语法合法,但超过两层就该换 if-else——可读性和调试成本远高于节省的几行代码。
复合赋值如 +=、**= 简洁安全,但避免在表达式中混用自增/自减(如 arr[i++] = x),尤其在复杂索引场景下易引发歧义;现代代码更倾向显式写法,如 i += 1; arr[i] = x。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










