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 比较运算符
比较两个值,返回布尔值 true 或 false:
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"