JavaScript 运算符

运算符是操作数据的符号。JavaScript 的运算符分为几大类,各有不同的用途和规则。

算术运算符

最基本的数学运算:

javascript
10 + 5;   // 15  加
10 - 5;   // 5   减
10 * 5;   // 50  乘
10 / 5;   // 2   除
10 % 3;   // 1   取余(模运算)
2 ** 3;   // 8   幂运算(2 的 3 次方)

取余运算的常见用途

javascript
// 判断奇偶数
function isEven(n) {
  return n % 2 === 0; // 偶数余数为 0
}

// 循环限制(0~N-1 内循环)
const nextIndex = (currentIndex + 1) % arrayLength;

赋值运算符

javascript
let x = 10;

x += 5;   // x = x + 5  → 15
x -= 3;   // x = x - 3  → 12
x *= 2;   // x = x * 2  → 24
x /= 4;   // x = x / 4  → 6
x %= 4;   // x = x % 4  → 2

// 自增自减
let count = 0;
count++;  // 自增 1,count 变为 1
count--;  // 自减 1,count 变为 0

++-- 有前置和后置两种写法,行为不同:

javascript
let a = 5;
const b = a++;  // 后置:先赋值 b=5,再自增 a=6
const c = ++a;  // 前置:先自增 a=7,再赋值 c=7

比较运算符

比较两个值,返回布尔值 truefalse

javascript
5 > 3;    // true
5 < 3;    // false
5 >= 5;   // true
5 <= 4;   // false
5 === 5;  // true(严格相等)
5 !== 3;  // true(严格不等)

=== vs ==

运算符比较方式示例
===严格相等,类型和值都须相同5 === '5'false
==宽松相等,会进行类型转换5 == '5'true

始终使用 ===!==== 的类型转换规则极其复杂且容易踩坑(如 0 == ''true)。唯一的例外是 == null:它等价于 value === null || value === undefined,是一个被广泛认可的简洁写法。

逻辑运算符

javascript
// 与(AND):两边都为 true 才为 true
true && true;   // true
true && false;  // false

// 或(OR):至少一边为 true 即为 true
true || false;  // true
false || false; // false

// 非(NOT):取反
!true;          // false
!false;         // true

短路求值

&&|| 的求值逻辑:

javascript
// && 遇到第一个假值就停
false && console.log('不会执行'); // 不打印

// || 遇到第一个真值就停
true || console.log('不会执行');  // 不打印

实用场景

javascript
// 提供默认值(||)
const name1 = userInput || '匿名用户';

// 空值合并:仅在 null/undefined 时取默认值(??)
const name2 = userInput ?? '匿名用户';

// 条件执行(&&)
isLoggedIn && showDashboard();
// 等价于 if (isLoggedIn) showDashboard();

??(空值合并运算符)和 || 的区别:||0''false 也视为假值;?? 只在 null/undefined 时使用默认值。当你需要区分”没有值”和”值为 0”时,应使用 ??

三元运算符(条件运算符)

条件 ? 值1 : 值2 ——如果条件为真取值1,否则取值2:

javascript
const age = 20;
const status = age >= 18 ? '成年' : '未成年';
console.log(status); // "成年"

const greeting = isLoggedIn ? `欢迎回来,${userName}` : '请先登录';

运算符优先级

当多个运算符同时出现时,优先级决定计算顺序。例如乘除优先于加减:

javascript
2 + 3 * 4; // 14(不是 20)
(2 + 3) * 4; // 20(括号改变顺序)

规则很多,不必全部记忆。不确定优先级时加括号——这是最简单最安全的方法。括号中的表达式总是最先计算。

字符串拼接

运算符不止用于数字:

javascript
// + 号用于字符串表示拼接
'Hello' + ' ' + 'World'; // "Hello World"

// 数字 + 字符串 → 字符串
'答案是' + 42; // "答案是42"

// 模板字面量(推荐)比 + 拼接更清晰
const answer = 42;
`答案是${answer}`; // "答案是42"