依据这些 JS 运算符执行的操作类型,咱们能够将它们分为七组:

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

算术运算符

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

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

let x = 3;let y = 8;console.log(x + y); // 11

您能够间接对值应用运算符,而无需将它们调配给任何变量:

console.log(2 + 1); // 3console.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); // trueconsole.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); // trueconsole.log(9 != 20); // trueconsole.log(2 > 10); // falseconsole.log(2 < 10); // trueconsole.log(5 >= 10); // falseconsole.log(10 <= 10); // true

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

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

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

console.log("ABC" == "ABC"); // trueconsole.log("ABC" == "abc"); // falseconsole.log("Z" != "A"); // true

字符串比拟辨别大小写,如上例所示。

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

console.log("9" == 9); // true// strict equalconsole.log("9" === 9); // falseconsole.log("1" != 1); // false// strict not equalconsole.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 = 0console.log(1 & 2); // 0

2. 按位 OR 运算符

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

// 1 = 00000001// 2 = 00000010// ------------//     00000011 = 3console.log(1 | 2); // 3

二进制数00000011示意十进制数 3,因而下面的 OR 运算符返回 3。

按位异或运算符

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

5 = 00000101

// 5 = 00000101// 7 = 00000111// ------------//     00000010 = 2console.log(5 ^ 7); // 2

按位非运算符

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

// 5 = 00000101// ------------//     11111010 = -6console.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); // -35console.log(-70 >>> 1); // 2147483613console.log(5 >> 1); // 2console.log(5 >>> 1); // 2