JavaScript 词条目录
前端Wiki/JavaScript/基础/变量与数据类型

运算符

常用运算符可以分四类:算术(+ - * / % **)、比较(=== !== > <)、逻辑(&& || !)、赋值(= += -= 等)。

两个逻辑运算符有「短路」特性:&& 遇到假值就提前返回,|| 遇到真值就提前返回。ES2020 新增了两个非常实用的运算符:??(空值合并)只在值为 null/undefined 时才使用备选值,比 || 更精确(0 和 '' 不会被误伤);?.(可选链)可以安全地访问深层属性,中间某一层不存在就返回 undefined 而不报错。

三元表达式 条件 ? 值1 : 值2 是 if/else 的简写,适合在模板和 JSX 里内联使用,但嵌套超过两层就应该换回 if 语句,保证可读性。

本节要点% 取余常用于判断奇偶;&&/|| 有短路特性;?? 只兜底 null 和 undefined;?. 防止深层属性报错;三元适合简单二选一。
JavaScript
let a = 10, b = 3;
console.log(a + b, a - b, a * b); // 13 7 30
console.log(a / b);               // 3.3333...(不自动取整)
console.log(a % b);               // 1 取余:判断奇偶常用
console.log(a ** b);              // 1000 幂运算

// 逻辑运算符的短路特性
console.log(true && '返回右边');   // '返回右边'
console.log(0 || '备选值');        // '备选值'(0 是假值)

// ?? 与 || 的区别
console.log(0 || '默认');          // '默认'
console.log(0 ?? '默认');          // 0(0 不算"空")
console.log(null ?? '默认');       // '默认'

// ?. 可选链:安全访问深层属性
const user = { address: { city: '北京' } };
console.log(user?.address?.city);  // 北京
console.log(user?.phone?.number);  // undefined,不报错

// 三元表达式
console.log(a > b ? 'a大' : 'b大');