返回

JavaScript 运算符指南:掌握 JS 运算符与优先级的奥秘

前端

JavaScript 运算符:掌握编程的基础

在编程的世界中,运算符就像语言中的语法,它们将不同的变量和值连接起来,形成有意义的表达式。在 JavaScript 中,运算符扮演着至关重要的角色,理解和掌握这些运算符将使你成为一名更强大的程序员。

1. 算术运算符:数学的基石

算术运算符让你能够对数字进行基本数学运算。它们包括:

  • 加法 (+):x + y
  • 减法 (-):x - y
  • 乘法 (*):x * y
  • 除法 (/):x / y
  • 取模 (%):x % y,返回除法的余数

2. 比较运算符:大小和相等性的守门人

比较运算符用于比较两个值的大小或相等性:

  • 等于 (==):x == y
  • 不等于 (!=) 或 (!==):x != y
  • 大于 (>):x > y
  • 小于 (<):x < y
  • 大于或等于 (>=):x >= y
  • 小于或等于 (<=):x <= y

3. 逻辑运算符:布尔表达式连接器

逻辑运算符允许你连接两个或多个布尔表达式:

  • 逻辑与 (&&):如果两个表达式都为真,则结果为真
  • 逻辑或 (||):如果两个表达式中至少有一个为真,则结果为真
  • 逻辑非 (!):将布尔值取反

4. 赋值运算符:变量赋值助手

赋值运算符将值分配给变量:

  • 等于 (=):x = y
  • 加等于 (+=):x += y
  • 减等于 (-=):x -= y
  • 乘等于 (*=):x *= y
  • 除等于 (/=):x /= y

5. 增量运算符:快速增减值

增量运算符用于快速递增或递减变量的值:

  • 前缀递增 (++x):在使用变量之前递增
  • 后缀递增 (x++):在使用变量之后递增
  • 前缀递减 (--x):在使用变量之前递减
  • 后缀递减 (x--):在使用变量之后递减

6. 位运算符:二进制操作大师

位运算符在二进制级别操作值:

  • 按位与 (&):x & y,返回两个值的每个位都为 1 的位
  • 按位或 (|):x | y,返回两个值的每个位至少有一个为 1 的位
  • 按位异或 (^):x ^ y,返回两个值的不同位为 1 的位
  • 按位非 (~):~x,返回 x 的所有位取反

7. 三元运算符:条件表达式简化器

三元运算符是一种条件运算符,根据条件返回不同的值:

condition ? trueValue : falseValue

8. 特殊运算符:高级工具

JavaScript 还提供了一些特殊运算符,用于执行特定任务:

  • 逗号运算符 (,):将多个表达式连接起来
  • typeof 运算符 (typeof):返回一个值的类型
  • void 运算符 (void):返回 undefined,用于抑制表达式副作用
  • delete 运算符 (delete):删除对象属性
  • new 运算符 (new):创建新对象

运算符优先级:执行顺序指南

运算符具有优先级,这决定了它们的执行顺序。运算符优先级表如下:

运算符 优先级
() 1
[] 2
. 3
new 4
++ 5
-- 6
! 7
~ 8
* 9
/ 9
% 9
+ 10
- 10
<< 11
>> 11
>>> 11
< 12
<= 12
> 12
>= 12
in 12
instanceof 12
== 13
!= 13
=== 14
!== 14
& 15
^ 16
&& 18
? : 20
= 21
+= 21
-= 21
*= 21
/= 21
%= 21
<<= 21
>>= 21
>>>= 21
&= 21
^= 21
=

代码示例:运算符在实践中

为了更好地理解这些运算符,让我们通过一些代码示例来演示它们的用法:

// 算术运算符
const sum = 10 + 20; // 30
const difference = 100 - 50; // 50
const product = 10 * 10; // 100
const quotient = 100 / 10; // 10
const remainder = 10 % 3; // 1

// 比较运算符
const isGreater = 10 > 5; // true
const isEqual = 10 == 10; // true
const isNotEqual = 10 != 20; // true

// 逻辑运算符
const isTrue = true && true; // true
const isFalse = false || false; // false
const isNegated = !true; // false

// 赋值运算符
let x = 10;
x += 5; // x 等于 15
x -= 3; // x 等于 12

常见问题解答

1. 什么是运算符重载?

运算符重载允许自定义运算符的行为。这在创建 DSL 或扩展语言功能时很有用。

2. 什么是左结合和右结合?

左结合意味着运算符从左到右结合,而右结合意味着它们从右到左结合。这影响了表达式评估的顺序。

3. 如何防止运算符优先级冲突?

括号 () 可用于明确运算符的执行顺序。

4. 如何使用三元运算符简化条件语句?

三元运算符可以替代冗长的 if-else 语句,例如:

const result = condition ? trueValue : falseValue;

5. 为什么在 JavaScript 中使用严格相等运算符 (===) 很重要?

严格相等运算符强制类型转换,确保比较值不仅相等,而且类型也相同。这可以防止意外行为。