依据这些 JS 运算符执行的操作类型,咱们能够将它们分为七组:
- 算数运算符
- 赋值运算符
- 比拟运算符
- 逻辑运算符
- 三元运算符
- 运算符的类型
- 按位运算符
算术运算符
算术运算符用于执行数学运算,如加法和减法。
这些运算符常常与数字数据类型一起应用,因而它们相似于计算器。上面的示例演示如何应用运算符将两个变量相加:+
let x = 3;
let y = 8;
console.log(x + y); // 11
您能够间接对值应用运算符,而无需将它们调配给任何变量:
console.log(2 + 1); // 3
console.log(4 + 1); // 5
在 JavaScript 中,咱们总共有 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 = y |
x = y |
加法调配 | x += y |
x = x + y |
减法调配 | x -= y |
x = x - y |
乘法赋值 | x *= y |
x = x * y |
除法调配 | x /= y |
x = x / y |
余数调配 | x %= y |
x = x % y |
幂赋值 | x **= y |
x = 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 |
||
逻辑或 | `x | y` | 如果其中一个操作数为,则返回,否则返回 true `true`false |
|
逻辑不是 | !x |
反转后果:返回 if 反之亦然 true `false` |
这些运算符只能返回布尔值。例如,您能够确定“7 是否大于 2”和“5 大于 4”:
console.log(7 > 2 && 5 > 4); // true
这些逻辑运算符遵循数理逻辑定律:
&&
AND 运算符 – 如果任何表达式返回 false,则后果为 false||
OR 运算符 – 如果任何表达式返回 true,则后果为 true!
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. 按位 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