操作符
在脚本中有以下多种类型的操作符:
算术运算符
| 运算符 | 描述 | 格式 | 示例 |
|---|---|---|---|
+ | 执行加法运算 | a + b | 例如:1 + 3返回4 |
- | 执行减法运算 | a - b | 例如:5 - 1返回4 |
* | 执行乘法运算 | a * b | 例如:2 * 2返回4 |
/ | 执行除法运算 | a / b | 例如:8 / 2返回4 |
% | 执行取模运算 | a % b | 例如:19 % 5返回4 |
位运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
& | 执行按位与运算 | 例如 33 & 4结果为0 |
| ` | ` | 执行按位或运算 |
^ | 执行按位异或运算 | 例如 33 ^ 4结果为37 |
~ | 执行按位取反运算 | 例如 ~33结果为-34 |
<< | 执行左移运算 | 例如 1 << 2结果为4 |
>> | 执行右移运算 | 例如 4 >> 2结果为1 |
>>> | 执行无符号右移运算 | 例如 -8 >>> 2 结果为 1073741820 |
赋值运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
= | 执行赋值运算 | 例如: b = 4 a = b 结果 a = 4 |
+= | 执行加法并将结果赋值给左侧操作数 | 例如 a += 2 等价于 a = a + 2。 |
-= | 执行减法并将结果赋值给左侧操作数 | 例如 a -= 2 等价于 a = a - 2。 |
*= | 执行乘法并将结果赋值给左侧操作数 | 例如 a *= 2 等价于 a = a * 2。 |
/= | 执行除法并将结果赋值给左侧操作数 | 例如 a /= 2 等价于 a = a / 2。 |
%= | 执行取模并将结果赋值给左侧操作数 | 例如 a %= 2 等价于 a = a % 2。 |
&= | 执行按位与操作并将结果赋值给左侧操作数 | 例如 a &= 2 等价于 a = a & 2。 |
| ` | =` | 执行按位或操作并将结果赋值给左侧操作数 |
^= | 执行按位异或操作并将结果赋值给左侧操作数 | 例如 a ^= 2 等价于 a = a ^ 2。 |
<<= | 执行左移操作并将结果赋值给左侧操作数 | 例如 a <<= 2 等价于 a = a << 2。 |
>>= | 执行右移操作并将结果赋值给左侧操作数 | 例如 a >>= 2 等价于 a = a >> 2。 |
>>> | 执行无符号右移操作并将结果赋值给左侧操作数 | 例如 a >>>= 2 等价于 a = a >>> 2。 |
比较运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
== | 检查两个操作数是否相等,返回布尔结果。不同类型的操作数会尝试进行转换后比较 | 例如 3 == 5结果为false |
!= | 检查两个操作数是否不相等,返回布尔结果。不同类型的操作数会尝试进行转换后比较 | 例如 3 != 5结果为true |
=== | 检查两个操作数是否相等,返回布尔结果。不同类型的操作数总是被认为是不相等的 | 例如 3 === 5结果为false |
!== | 检查两个操作数是否不相等,返回布尔结果。不同类型的操作数总是被认为是不相等的 | 例如 3 !== 5结果为true |
< | 检查左侧操作数是否小于右侧操作数,返回布尔结果。 | 例如 3 < 4结果为true |
<= | 检查左侧操作数是否小于或等于右侧操作数,返回布尔结果。 | 例如 3 <= 4结果为true |
> | 检查左侧操作数是否大于右侧操作数,返回布尔结果。 | 例如 2 > 4结果为false |
>= | 检查左侧操作数是否大于或等于右侧操作数,返回布尔结果。 | 例如 2 >= 4结果为false |
=~ | 操作符检查字符串是否匹配正则表达式 | 例如"abcdef" =~ "abc.*" 返回 true |
!~ | 操作符检查字符串是否不匹配正则表达式 | 例如 "abcdef" !~ "abc.*" 返回 false |
=^ | 操作符检查字符串是否以某个子字符串开头 | 例如 "abcdef" =^ "abc" 返回 true |
!^ | 操作符检查字符串是否不以某个子字符串开头 | 例如 "abcdef" !^ "abc" 返回 false |
=$ | 操作符检查字符串是否以某个子字符串结尾 | 例如 "abcdef" =$ "def" 返回 true |
!$ | 操作符检查字符串是否不以某个子字符串结尾 | 例如 "abcdef" !$ "def" 返回 false |
逻辑运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
and / && | 布尔与运算符,检查两个条件是否都为 true,如果是则结果为 true,否则为 false。此操作符不能被重载。 | 例如 cond1 and cond2 或 cond1 && cond2,当 cond1 和 cond2 都为 true 时结果为 true。 |
or / ` | ` | |
not / ! | 布尔非运算符,检查条件是否为 false,如果是则结果为 true,否则为 false。此操作符不能被重载。 | 例如 not cond1 或 !cond1,当 cond1 为 false 时结果为 true。 |
?: | 三元条件运算符,根据条件的布尔值返回不同的结果。条件为 true 时返回第一个值,否则返回第二个值。 | 例如 val1 ? val1 : val2 或 val1 ?: val2,当 val1 不为 null 或 false 时结果为 val1。 |
?? | 空合并运算符,返回第一个操作数的值,如果它是定义的且不为 null。否则返回第二个值。 | 例如 x ?? 'default',当 x 为 null 或 undefined 时返回 'default'。 |
特殊运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
empty | 使用 empty 操作符检查值是否为空,等效于 empty() 函数。 | 例如 empty arg 和 empty(arg) 是等价的。 |
size | 使用 size 操作符检查集合的大小,等效于 size() 函数。 | 例如 size [1,2,3] 和 size([1,2,3]) 是等价的。 |
instanceof | 使用 instanceof 操作符检查对象是否属于某个类,也支持 !instanceof。 | 例如 obj instanceof MyClass。 |