JavaScript中的运算符

JavaScript中的运算符

在本文中,我们将解释JavaScript中的运算符。

YouTube Video

JavaScript中的运算符

JavaScript中的运算符是用于对数字或变量进行计算或比较的符号或关键字。运算符有多种类型,每种都执行不同的操作。以下是一些主要运算符的总结:。

算术运算符

JavaScript 的 算术运算符 包括以下内容:。

运算符 描述 示例 结果
+ 加法 5 + 2 7
- 减法 5 - 2 3
* 乘法 5 * 2 10
/ 除法 5 / 2 2.5
% 取模(余数) 5 % 2 1
++ 自增(加1) let x = 5; x++ 6
-- 自减(减1) let x = 5; x-- 4
 1let a = 10; // Initialize variable 'a' with the value 10
 2let b = 3;  // Initialize variable 'b' with the value 3
 3
 4// Perform and display arithmetic operations between 'a' and 'b'
 5console.log("Addition (a + b):      ", a + b); // 13
 6console.log("Subtraction (a - b):   ", a - b); // 7
 7console.log("Multiplication (a * b):", a * b); // 30
 8console.log("Division (a / b):      ", a / b); // 3.333...
 9console.log("Modulus (a % b):       ", a % b); // 1
10
11// Demonstrate post-increment operation on 'a'
12// Output the current value of 'a' (10), then increment
13console.log("Post-increment (a++):  ", a++);
14// Display the incremented value of 'a' (11)
15console.log("Value of 'a' after increment:", a);
16
17// Demonstrate pre-increment operation on 'a'
18// Increment 'a' first (12) then output
19console.log("Pre-increment (++a):   ", ++a);
20
21// Demonstrate post-decrement operation on 'a'
22// Output the current value of 'a' (12), then decrement
23console.log("Post-decrement (a--):  ", a--);
24// Display the decremented value of 'a' (11)
25console.log("Value of 'a' after decrement:", a);
26
27// Demonstrate pre-decrement operation on 'a'
28// Decrement 'a' first (10) then output
29console.log("Pre-decrement (--a):   ", --a);

算术运算符对数字执行基本的数学操作。除了加法和减法外,还可以执行取模、自增和自减等操作。请注意,自增或自减运算符返回的值取决于运算符是在操作数之前还是之后。

赋值运算符

JavaScript 的 赋值运算符 包括以下内容:。

运算符 描述 示例 结果
= 赋值 x = 5 x 被赋值为 5
+= 加法赋值 x += 5 x = x + 5
-= 减法赋值 x -= 5 x = x - 5
*= 乘法赋值 x *= 5 x = x * 5
/= 除法赋值 x /= 5 x = x / 5
%= 取模赋值 x %= 5 x = x % 5
 1let x = 10;
 2
 3x += 5;  // x = x + 5, so x becomes 15
 4console.log('After x += 5 : ', x);  // 15
 5
 6x -= 10;
 7console.log('After x -= 10 : ', x);  // 5
 8
 9x *= 3;
10console.log('After x *= 3 : ', x);  // 15
11
12x /= 3;
13console.log('After x /= 3 : ', x);  // 5
14
15x %= 2;
16console.log('After x %= 2 : ', x);  // 1

赋值运算符用于给变量赋值或更新变量的值。除了常规赋值外,还有用于算术运算(如加法和取模)的赋值运算符。

比较运算符

JavaScript 的 比较运算符 包括以下内容:。

运算符 描述 示例 结果
== 等于 5 == "5" true
=== 严格等于(类型和值均相等) 5 === "5" false
!= 不等于 5 != "5" false
!== 严格不等于 5 !== "5" true
> 大于 5 > 2 true
< 小于 5 < 2 false
>= 大于或等于 5 >= 5 true
<= 小于或等于 5 <= 4 false
 1console.log("5 == '5' evaluates to:", 5 == "5");   // true (because the values are equal)
 2console.log("5 === '5' evaluates to:", 5 === "5"); // false (because the types are different)
 3console.log("5 != '5' evaluates to:", 5 != "5");   // false
 4console.log("5 !== '5' evaluates to:", 5 !== "5"); // true
 5console.log("5 > 2 evaluates to:", 5 > 2);         // true
 6console.log("5 < 2 evaluates to:", 5 < 2);         // false
 7console.log("5 >= 5 evaluates to:", 5 >= 5);       // true
 8console.log("5 <= 4 evaluates to:", 5 <= 4);       // false
 9console.log("5 >= '5' evaluates to:", 5 >= "5");   // true
10console.log("5 <= '5' evaluates to:", 5 <= "5");   // true
  • 比较运算符用于比较值,并返回 true 或 false。
  • 等于操作符(==)在进行比较之前会在必要时自动转换不同的类型。严格等于操作符(===)在比较时不会执行任何类型转换,只有当两个值类型相同且值相等时才返回 true。使用严格等于操作符(===)有助于防止由于意外的类型转换引起的错误,因此建议优先使用它。

逻辑运算符

JavaScript 的 逻辑运算符 包括以下内容:。

运算符 描述 示例 结果
&& 与 (当两个条件均为 true 时为 true) true && false false
|| 或 (当任一条件为 true 时为 true) true || false true
! 非 (将 true 转为 false,将 false 转为 true) !true false
1let a = true;
2let b = false;
3
4console.log("a && b evaluates to:", a && b);  // false
5console.log("a || b evaluates to:", a || b);  // true
6console.log("!a evaluates to:", !a);          // false

逻辑运算符用于在有多个条件时,对条件的组合进行求值。

逻辑运算符的优先级

在 JavaScript 中,逻辑运算符通常按照 NOT 先执行,然后是 AND,最后是 OR 的顺序进行评估。

NOT 的优先级最高

NOT 是一元运算符,其优先级最高。

1console.log(!true || false);  // false
AND 的优先级高于 OR

AND 的优先级高于 OR,因此会优先评估 AND 部分。

1console.log(true || false && false);  // true

这样,AND&&)部分会先被计算,其结果将传递给 OR||)。

ANDOR 执行短路评估

JavaScript 的 ANDOR 执行短路评估。如果可以通过左侧值确定结果,则不会评估右侧表达式。

1let a = false && console.log("This will not be printed");
2console.log(a);  // false
3
4let b = true || console.log("This will not be printed");
5console.log(b);  // true

在任一情况下,console.log() 都不会被执行。

明确设定优先级

通过使用括号明确地对表达式进行分组,可以防止对优先级的误解。

1console.log(true || (false && false));  // true
自然语言与程序解释之间的差异

使用逻辑运算符时,注意自然语言中的歧义是很重要的。例如,说“白狗或猫”时,它可能表示“白狗或任何颜色的猫”,也可能表示“白狗或白猫”。在代码中,它可能会像这样:。

1if (isWhite && isDog || isCat) {
2    console.log(' "A white dog" or "a cat of any color" ');
3}
4
5if (isWhite && (isDog || isCat)) {
6    console.log(' "A white dog" or "a white cat" ');
7}
8
9console.log(true || (false && false));  // true

由于自然语言中存在这样的歧义,编写代码或进行设计时需要注意。

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

JavaScript 包含一个 三元运算符(条件运算符)

运算符 描述 示例 结果
? : 如果条件为 true,则执行左侧;如果为 false,则执行右侧 condition ? if true : if false 根据条件返回结果
1let age = 20;
2let message = age >= 18 ? "Adult" : "Minor";
3console.log(message);  // "Adult"

它的写法为 条件 ? 为真时的值 : 为假时的值

位运算符

JavaScript 的 位运算符 包括以下内容。

运算符 描述 示例 结果
& AND 5 & 1 1
| OR 5 | 1 5
^ XOR 5 ^ 1 4
~ NOT ~5 -6
<< 左移 5 << 1 10
>> 右移 5 >> 1 2
 1let x = 0x0F & 0x0C;
 2console.log("0x0F & 0x0C evaluates to:", x, "(0x0C, 12)");  // 0x0C (12)
 3
 4x = 0x04 | 0x02;
 5console.log("0x04 | 0x02 evaluates to:", x, "(0x06, 6)");  // 0x06 (6)
 6
 7x = 0x0F ^ 0x0C;
 8console.log("0x0F ^ 0x0C evaluates to:", x, "(0x03, 3)");  // 0x03 (3)
 9
10// The inverted number is represented as a negative value
11// because JavaScript numbers are stored as signed 32-bit integers.
12x = ~0x0C;
13console.log("~0x0C evaluates to:", x, "(-13, 0xF3)");  // 0xF3 (-13)
14
15x = 0x04 << 1;
16console.log("0x04 << 1 evaluates to:", x, "(0x08, 8)");    // 0x08 (8)
17x = 0x04 >> 1;
18console.log("0x04 >> 1 evaluates to:", x, "(0x02, 2)");    // 0x02 (2)

位运算符在位级别对数字进行计算。它们通常用于底层处理。

类型运算符

JavaScript 的 类型运算符 包括以下内容。

运算符 描述 示例 结果
typeof 返回变量的类型 typeof 123 "number"
instanceof 检查对象是否属于某个特定类 arr instanceof Array true
1console.log(typeof "Hello");  // "string"
2console.log(typeof 42);       // "number"
3
4let arr = [1, 2, 3];
5console.log("arr instanceof Array : ", arr instanceof Array); // true

类型运算符用于检查值的类型或将其转换为特定类型。

typeof 运算符返回变量的类型。

instanceof 运算符检查对象是否属于特定类。

总结

  • 算术运算符执行基本计算。
  • 赋值运算符为变量赋值或更新值。
  • 比较运算符比较两个值并返回true或false。
  • 逻辑运算符评估条件的组合。
  • 三元运算符允许以比if更简短的形式编写条件语句。
  • 位运算符在位级别执行计算。
  • 类型运算符允许检查值的类型。

您可以在我们的YouTube频道上使用Visual Studio Code跟随上述文章进行学习。 请也查看我们的YouTube频道。

YouTube Video