JavaScript运算符参考手册
JavaScript 算术运算符
给定 y = 5,下表解释了算术运算符:
运算符 | 描述 | 例子 | y 中的结果 | x 中的结果 |
---|---|---|---|---|
+ | 加 | x = y + 2 | y = 5 | x = 7 |
- | 减 | x = y - 2 | y = 5 | x = 3 |
* | 乘 | x = y * 2 | y = 5 | x = 10 |
/ | 除 | x = y / 2 | y = 5 | x = 2.5 |
% | 模数(除余) | x = y % 2 | y = 5 | x = 1 |
++ | 累加 | x = ++y | y = 6 | x = 6 |
x = y++ | y = 6 | x = 5 | ||
– | 递减 | x = --y | y = 4 | x = 4 |
x = y– | y = 4 | x = 5 |
JavaScript 赋值运算符
给定 x = 10 且 y = 5,下表解释了赋值运算符:
运算符 | 例子 | 等同于 | x 中的结果 |
---|---|---|---|
= | x = y | x = y | x = 5 |
+= | x += y | x = x + y | x = 15 |
-= | x -= y | x = x - y | x = 5 |
*= | x *= y | x = x * y | x = 50 |
/= | x /= y | x = x / y | x = 2 |
%= | x %= y | x = x % y | x = 0 |
JavaScript 字符串运算符
给定 text1 = "Good "、text2 = “Morning”,以及 text3 = “”,下表解释了该运算符:
运算符 | 例子 | text1 | text2 | text3 |
---|---|---|---|---|
+ | text3 = text1 + text2 | "Good " | “Morning” | “Good Morning” |
+= | text1 += text2 | “Good Morning” | “Morning” | “” |
比较运算符
在逻辑语句中使用比较运算符来确定变量或值之间的相等性或差异。
给定 x = 5,下表解释了比较运算符:
运算符 | 描述 | 比较 | 返回 |
---|---|---|---|
== | 等于 | x == 8 | false |
x == 5 | true | 试一试 | |
=== | 相等值和相等类型 | x === “5” | false |
x === 5 | true | 试一试 | |
!= | 不相等 | x != 8 | true |
!== | 不相等的值或不相等的类型 | x !== “5” | true |
x !== 5 | false | 试一试 | |
> | 大于 | x > 8 | false |
< | 小于 | x < 8 | true |
>= | 大于或等于 | x >= 8 | false |
<= | 小于或等于 | x <= 8 | true |
条件(三元)运算符
条件运算符根据条件将值赋给变量。
variablename = (condition) ? value1:value2
voteable = (age < 18) ? "Too young":"Old enough";
// 如果变量 "age" 的值小于 18,则变量 "voteable" 的值将为 "Too young",否则,"voteable" 的值将为 "Old enough"。
逻辑运算符
逻辑运算符用于确定变量或值之间的逻辑。
给定 x = 6 且 y = 3,下表解释了逻辑运算符:
运算符 | 描述 | 例子 |
---|---|---|
&& | and | (x < 10 && y > 1) is true |
|| | or | (x === 5 || y === 5) is false |
! | not | !(x === y) is true |
a && b : 如果执行a后返回true,则执行b并返回b的值;如果执行a后返回false,则整个表达式返回a的值,b不执行;
可以看作是 if(a){b} 如果后面还有跟 && 就是嵌套 if(b)
a || b : 如果执行a后返回true,则整个表达式返回a的值,b不执行;如果执行a后返回false,则执行b并返回b的值;
&& 优先级高于 ||;
JavaScript 位运算符
位运算符可处理 32 位数字。该运算中的任何数字操作数都将转换为 32 位数字。结果将转换回 JavaScript 数字。
运算符 | 描述 | 例子 | 等同于 | 结果 | 十进制 |
---|---|---|---|---|---|
& | AND | x = 5 & 1 | 0101 & 0001 | 0001 | 1 |
| | OR | x = 5 | 1 | 0101 | 0001 | 0101 | 5 |
~ | NOT | x = ~ 5 | ~0101 | 1010 | 10 |
^ | XOR | x = 5 ^ 1 | 0101 ^ | 0100 | 4 |
<< | Left shift | x = 5 << 1 | 0101 << 1 | 1010 | 10 |
>> | 有符号移位 | x = 5 >> 1 | 0101 >> 1 | 0010 | 2 |
>>> | 无符号移位 |
>>有符号移位
:该操作符会将第一个操作数向右移动指定的位数。向右被移出的位被丢弃,拷贝最左侧的位以填充左侧
>>>无符号移位
:该操作符会将第一个操作数向右移动指定的位数。向右被移出的位被丢弃,左侧用0填充。因为符号位变成了 0,所以结果总是非负的。(即便右移 0 个比特,结果也是非负的。)
JDK 源码 binarySearch,其中用到了int mid = (low + high) >>> 1;
int mid = (low + high) >>> 1
<==>int mid = Math.floor((low +high)/2)
instanceof 运算符
如果指定对象是指定对象的实例,则 instanceof 运算符返回 true:
in 运算符
如果指定的属性在指定的对象中,则 in 运算符将返回 true,否则返回 false:
typeof 运算符
typeof 运算符返回变量、对象、函数或表达式的类型: