JavaScript 常见运算符详解

JavaScript 常见运算符详解

JavaScript 提供了丰富的运算符用于执行各种操作,包括算术运算、比较、逻辑运算等。以下是 JavaScript 中常见的运算符分类和详细说明:


一、算术运算符

运算符描述示例结果
+加法5 + 27
-减法5 - 23
*乘法5 * 210
/除法5 / 22.5
%取模(余数)5 % 21
**指数(ES6)2 ** 38
++自增let a=5; a++a=6
--自减let a=5; a--a=4

注意:自增/自减运算符有前缀和后缀两种形式:

let a = 5;
let b = a++; // b=5, a=6 (后缀:先赋值再自增)
let c = ++a; // c=7, a=7 (前缀:先自增再赋值)

二、赋值运算符

运算符示例等价于
=x = yx = y
+=x += yx = x + y
-=x -= yx = x - y
*=x *= yx = x * y
/=x /= yx = x / y
%=x %= yx = x % y
**=x **= yx = x ** y

三、比较运算符

运算符描述示例结果
==等于(值相等)'5' == 5true
===严格等于(值和类型都相等)'5' === 5false
!=不等于'5' != 5false
!==严格不等于'5' !== 5true
>大于5 > 3true
<小于5 < 3false
>=大于等于5 >= 5true
<=小于等于5 <= 3false

最佳实践:总是使用 ===!== 避免隐式类型转换带来的意外结果。


四、逻辑运算符

运算符描述示例结果
&&逻辑与true && falsefalse
``逻辑或
!逻辑非!truefalse

短路求值

// && 如果第一个操作数为假,直接返回它,否则返回第二个操作数
0 && console.log('hi')  // 输出 0 (不会执行log)

// || 如果第一个操作数为真,直接返回它,否则返回第二个操作数
null || 'default'  // 返回 'default'

五、位运算符

运算符描述示例结果 (二进制)
&按位与5 & 10101 & 0001 = 0001 (1)
``按位或`5
^按位异或5 ^ 10101 ^ 0001 = 0100 (4)
~按位非~5~0101 = 1010 (-6)
<<左移5 << 10101 << 1 = 1010 (10)
>>右移5 >> 10101 >> 1 = 0010 (2)
>>>无符号右移-5 >>> 1很大的正数

六、三元运算符

条件 ? 表达式1 : 表达式2

示例:

let age = 20;
let status = age >= 18 ? '成人' : '未成年'; // '成人'

七、特殊运算符

1. 类型运算符

typeof 'hello'  // 'string'
instanceof Array  // 检查是否为数组

2. 空值合并运算符 ?? (ES2020)

let value = null ?? 'default'; // 'default'

|| 的区别:?? 只在左侧为 nullundefined 时返回右侧值,而 || 会对所有假值(0, ''等)生效。

3. 可选链运算符 ?. (ES2020)

const user = { profile: { name: 'John' } };
console.log(user?.profile?.name); // 'John'
console.log(user?.address?.city); // undefined (不会报错)

4. 展开运算符 ... (ES6)

const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4]; // [1, 2, 3, 4]

const obj1 = { a: 1 };
const obj2 = { ...obj1, b: 2 }; // { a:1, b:2 }

5. 逗号运算符

let a = (1, 2, 3); // a=3 (返回最后一个表达式的值)

八、运算符优先级

从高到低的部分优先级:

  1. () 分组
  2. ++ -- ! ~ typeof 等一元运算符
  3. ** 指数
  4. * / %
  5. + -
  6. << >> >>>
  7. < <= > >= instanceof
  8. == != === !==
  9. & ^ |
  10. && ||
  11. ?? (空值合并)
  12. ?: (三元)
  13. = += 等赋值
  14. , 逗号

最佳实践:使用括号明确优先级,避免依赖隐式优先级规则。


九、注意事项

  1. + 运算符在遇到字符串时会进行拼接:

    3 + 4 + "5"  // "75" (先3+4=7,然后7+"5")
    "3" + 4 + 5  // "345" (从左到右全部转为字符串)
    
  2. 浮点数运算精度问题:

    0.1 + 0.2 === 0.3  // false (实际约为0.30000000000000004)
    
  3. 使用 Object.is() 进行严格比较:

    Object.is(NaN, NaN)  // true
    Object.is(0, -0)     // false
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值