likes
comments
collection
share

一文搞懂JavaScript 运算符 – 逻辑、比较、三元和更多 JS 运算符

作者站长头像
站长
· 阅读数 13

根据这些 JS 运算符执行的操作类型,我们可以将它们分为七组:

  • 算数运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 三元运算符
  • 运算符的类型
  • 按位运算符

算术运算符

算术运算符用于执行数学运算,如加法和减法。

这些运算符经常与数字数据类型一起使用,因此它们类似于计算器。下面的示例演示如何使用运算符将两个变量相加:+

let x = 3;
let y = 8;

console.log(x + y); // 11

您可以直接对值使用运算符,而无需将它们分配给任何变量:

console.log(2 + 1); // 3
console.log(4 + 1); // 5

在 JavaScript 中,我们总共有 8 个算术运算符。它们是:

  1. 加法+
  2. 减法-
  3. 乘法*
  4. 除法/
  5. 取余%
  6. **
  7. 增加++
  8. 递减--

我们可以混合这些运算符来执行复杂的数学方程。

console.log(5 + 2 * 3); // 11

JavaScript 中的运算顺序与数学中的操作顺序相同。乘法、除法和幂的优先级高于加法或减法

可以使用括号更改操作的顺序。包装要首先执行的操作,如下所示:()

console.log((5 + 2) * 3); // 21

将递增或递减运算符与其他运算符一起使用时,需要将运算符放在前缀位置,如下所示:

let x = 5;
console.log(2 + ++x); // 2 + 6 = 8

让我们尝试一些练习。你能猜出这些操作的结果吗?

console.log(5 * 3 - 2);
console.log((3 * 6) % 2);
console.log(5 + 7 - 1);
console.log((4 + 9) * 4);

let x = 5;
console.log(++x);
console.log(x++ / 3);

赋值运算符

let x = 5;

在基本赋值运算符之后,还有 5 个赋值运算符将数学运算与赋值相结合。这些运算符可用于使代码干净而简短。

例如,假设您要将变量递增 2。以下是使用基本赋值运算符执行此操作的方法:x

let x = 5;

x = x + 2;

上面的代码没有任何问题,但您可以使用加法赋值重写第二行,如下所示:+=

let x = 5;

x += 2;

您可以在 JavaScript 中使用 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

让我们快速练习一下。

let x = 3;

x += 2 * 3;
console.log(x);

x -= 3;
console.log(x);

x %= 2;
console.log(x);

比较运算符

顾名思义,比较运算符用于将一个值或变量与其他值或变量进行比较。此类别中的运算符始终返回布尔值:要么 true 要么false

例如,假设您要比较变量的值是否大于 1。你可以通过下面的方法进行判断:

let x = 5;

console.log(x > 1); // true
console.log(x > 7); // false

avaScript 中有 8 种比较运算符可用:

名字操作示例意义
等于x == y如果操作数相等则返回true
不等于x != y如果操作数不相等,则返回true
严格等于x === y如果操作数相等且类型相同,则返回true
严格不等于x !== y如果操作数不相等或具有不同的类型,则返回true
大于x > y如果左操作数大于右操作数,则返回true
大于或等于x >= y如果左操作数大于或等于右操作数,则返回true
小于x < y如果左操作数小于右操作数,则返回true
小于或等于x <= y如果左操作数小于或等于右操作数,则返回true

以下是使用比较运算符的一些示例:

console.log(9 == 9); // true

console.log(9 != 20); // true

console.log(2 > 10); // false

console.log(2 < 10); // true

console.log(5 >= 10); // false

console.log(10 <= 10); // true

比较运算符进一步分为两种类型:关系运算符和相等运算符。

关系运算符比较一个操作数相对于第二个操作数的值(大于、小于)

相等运算符检查左侧的值是否等于右侧的值。它们还可用于比较如下所示的字符串:

console.log("ABC" == "ABC"); // true

console.log("ABC" == "abc"); // false

console.log("Z" != "A"); // true

字符串比较区分大小写,如上例所示。

在严格模式下,JavaScript 将比较值而不执行类型强制。要启用严格模式,您需要在操作中添加一个相等符号,如下所示:=

console.log("9" == 9); // true
// strict equal
console.log("9" === 9); // false

console.log("1" != 1); // false
// strict not equal
console.log("1" !== 1); // true

由于类型强制可能导致不需要的行为,因此在执行相等比较时应使用严格的相等运算符。

逻辑运算符

JavaScript 中有三个可用的逻辑运算符:

名字操作示例意义
逻辑和x && y如果所有操作数都是 ,则返回 ,否则返回true``true``false
逻辑或`xy`如果其中一个操作数为 ,则返回 ,否则返回true``true``false
逻辑不是!x反转结果:返回 if 反之亦然true``false

这些运算符只能返回布尔值。例如,您可以确定“7 是否大于 2”和“5 大于 4”:

console.log(7 > 2 && 5 > 4); // true

这些逻辑运算符遵循数理逻辑定律:

  1. &&AND 运算符 – 如果任何表达式返回false,则结果为false
  2. ||OR 运算符 – 如果任何表达式返回true,则结果为true
  3. !NOT 运算符 – 否定表达式,返回相反的表达式。

我们来看下面的语句,你能看出来结果吗

console.log(true && false);

console.log(false || false);

console.log(!true);

三元运算符

假设您需要在代码中实现一些特定的逻辑。假设你开了一家卖水果的商店。当总购买量为 3 美元或更多时,您可以享受 20 元的折扣。否则,您提供 1 元的折扣。

您可以使用语句实现逻辑,如下所示:if..else

let totalPurchase = 15;

let discount;

if (totalPurchase >= 20) {
  discount = 3;
} else {
  discount = 1;
}

上面的代码工作正常,但您可以使用三元运算符使代码更短、更简洁,如下所示:

let totalPurchase = 15;

let discount = totalPurchase >= 20 ? 3 : 1;

typeof

下面是使用运算符的一些示例:

let x = 5;
console.log(typeof x) //  'number'

console.log(typeof "Nathan") // 'string'

console.log(typeof true) // 'boolean'

console.log(typeof null) // 'object'

console.log(typeof [1, 2, 3]) // 'object'

console.log(typeof {}) // 'object'

console.log(typeof undefined) // 'undefined'

按位运算符

按位运算符是将其操作数视为一组二进制数字,但将运算结果作为十进制值返回的运算符

JavaScript 中有 7 种类型的按位运算符:

  1. &
  2. |
  3. 异或^
  4. ~
  5. 左移<<
  6. 右移>>
  7. 零填充右移>>>

1. 按位 AND 运算符

当数字 1 在两个操作数中重叠时,按位运算符 AND 返回 1。十进制数字 1 和 2 没有重叠的 1,因此在数字上使用此运算符返回 0:&

// 1 = 00000001
// 2 = 00000010
// ------------
//     00000000 = 0

console.log(1 & 2); // 0

2. 按位 OR 运算符

另一方面,按位运算符 OR 返回两个十进制数字中的所有 1。|

// 1 = 00000001
// 2 = 00000010
// ------------
//     00000011 = 3

console.log(1 | 2); // 3

二进制数00000011表示十进制数 3,因此上面的 OR 运算符返回 3。

按位异或运算符

按位 XOR 查找两个二进制数之间的差异。当相应的位相同时,它返回 0:^

5 = 00000101

// 5 = 00000101
// 7 = 00000111
// ------------
//     00000010 = 2

console.log(5 ^ 7); // 2

按位非运算符

按位 NOT 运算符反转十进制数的位,因此 0 变为 1,1 变为 0:~

// 5 = 00000101
// ------------
//     11111010 = -6

console.log(~5); // -6

按位左移运算符

按位左移通过从右侧添加零来移动位的位置。<<

然后丢弃多余的位,更改由位表示的十进制数。请参阅以下示例:

console.log(5 << 2);

// 5 = 00000101
// ------------ << Shift to the left by 2
//     00010100 = 20

右操作数是要添加到左操作数的零数。

按位右移运算符

按位右移通过从左侧添加零来移动位的位置。它与左移运算符相反:>>

console.log(5 >> 2); // 1

// 5 = 00000101
// ------------ >> Shift to the right by 2
//     00000001 = 1

按位零填充右移运算符

也称为无符号右移运算符,零填充右移运算符用于将位的位置向右移动,同时将符号位更改为 。>>>``0

此运算符将任何负数转换为正数,因此您可以看到将负数作为左操作数传递时它是如何工作的:

console.log(-70 >> 1); // -35
console.log(-70 >>> 1); // 2147483613

console.log(5 >> 1); // 2
console.log(5 >>> 1); // 2