运算
逻辑运算
-
! (非运算)= 易语言-取反
-
&& (与运算) = 易语言-并且
-
|| (或运算) = 易语言-或
对于非布尔值进行逻辑运算
由于JS是弱类型语言,所以可以进行非布尔值的逻辑运算。
&&-|| 与运算-或运算
-对于非布尔值进行与或运算
-会将其转换为布尔值,然后再运算,并返回原值。
-&&运算(找false,有就false)
-如果第一个值为true,则必然返回第二个值
-如果第一个值为false,则必然返回第一个值
-||运算(找true,有就true)
-如果第一个值为true,则必然返回第一个值
-如果第一个值为false,则必然返回第二个值
关系运算
- 相等运算
- ==(相等运算符)用作相等运算,JS会对相等运算符两侧进行类型转换在比较,相等则返回true。(例如:false == 0 这会返回true)。
- === (全等运算符)两边的值必须完全相等。由于JS设计之初为了让入门更简单,提供了相等运算,但是在转换过程中可能出现诡异的结果,JS在后续版本中添加了全等运算符。(例如:false===0 这会返回false)
- 不等运算
- !=(不等运算符)比较两侧不相等,不相等返回true。
- !==(全不等运算符)比较两侧的值必须完全不相等,完全不相等返回true。
- > 大于号 判断左值是否大于右值,成立返回true,反之。
- < 小于号 判断左值是否小于右值,成立返回true,反之。
- <= 小于等于号 判断左值是否小于等于右值,成立返回true,反之。
- >= 大于等于号 判断左值是否大于等于右值,成立返回true,反之。
对于非数值型的处理
会转换成数字进行比较
两边都是字符串,不会转换数字进行比较,而会比较unicode编码
NaN
全称 Not a Number。NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对
象设置为该值,来指示其不是数字值。
方法 parseInt() 和 parseFloat() 在不能解析指定的字符串时就返回这个值。对于一些常规情况下返回有效数字的函
数,也可以采用这种方法,用 Number.NaN 说明它的错误情况。
任何值和NaN做任何比较都是false。(NaN == NaN 返回false),判断一个值是否为NaN,需要通过函数isNaN()来进行。
赋值运算
- = 用于将右值赋值给左侧变量
- += a+=5 等价于 a = a + 5;
- -= a-=5 等价于a = a -5;
- = a=5 等价于 a = aX5;
- /= a/=5 等价于 a = a/5;
- %= a%=5 等价于 a = a%5; (取模,模等于)
一元运算
运算符 |
描述 |
+ |
加法 |
- |
减法 |
* |
乘法 |
** |
幂(ES2016) |
/ |
除法 |
% |
系数 |
++ |
递增 |
-- |
递减 |
对于非数字的运算处理
加法,"a"+1=a1,加法运算会将另一个值转换为字符串做拼串处理
其余会将非数字的值转为数字进行处理。
自增自减运算
- ++前置 和 后置++ 结果都是自增1.
- --前置 和 后置-- 结果都是自减1.
前置和后置的区别
单独一行表达式没有任何区别.
自增或自减运算的结果是一样的,不一样的是表达式的值。
单独一行表达式,前置++/--后置++/--的作用一致。
前置++ 表示运算前自增。使用这个表达式做运算时,先进行自增在运算。
后置++ 表示运算后自增。使用这个表达式做运算时,用原来的值做运算。然后自增。
不管哪种前置后置,当表达式完成,变量的值就已经改变。
自减同理。
运算符和操作数
在算术运算中,数被称为操作数。
(两个操作数之间执行的)运算由运算符定义。
JavaScript 运算符优先级值
值 |
运算符 |
描述 |
实例 |
20 |
( ) |
表达式分组 |
(3 + 4) |
19 |
. |
成员 |
person.name |
19 |
[] |
成员 |
person["name"] |
19 |
() |
函数调用 |
myFunction() |
19 |
new |
创建 |
new Date() |
17 |
++ |
后缀递增 |
i++ |
17 |
-- |
后缀递减 |
i-- |
16 |
++ |
前缀递增 |
++i |
16 |
-- |
前缀递减 |
--i |
16 |
! |
逻辑否 |
!(x==y) |
16 |
typeof |
类型 |
typeof x |
15 |
** |
求幂 (ES7) |
10 ** 2 |
14 |
* |
乘 |
10 * 5 |
14 |
/ |
除 |
10 / 5 |
14 |
% |
模数除法 |
10 % 5 |
13 |
+ |
加 |
10 + 5 |
13 |
- |
减 |
10 - 5 |
12 |
<< |
左位移 |
x << 2 |
12 |
>> |
右位移 |
x >> 2 |
12 |
>>> |
右位移(无符号) |
x >>> 2 |
11 |
< |
小于 |
x < y |
11 |
<= |
小于或等于 |
x <= y |
11 |
> |
大于 |
x > y |
11 |
>= |
大于或等于 |
x >= y |
11 |
in |
对象中的属性 |
"PI" in Math |
11 |
instanceof |
对象的实例 |
instanceof Array |
10 |
== |
相等 |
x == y |
10 |
=== |
严格相等 |
x === y |
10 |
!= |
不相等 |
x != y |
10 |
!== |
严格不相等 |
x !== y |
9 |
& |
按位与 |
x & y |
8 |
^ |
按位 XOR |
x ^ y |
7 |
| |
按位或 |
x | y |
6 |
&& |
逻辑与 |
x && y |
5 |
|| |
逻辑否 |
x || y |
4 |
? : |
条件 |
? "Yes" : "No" |
3 |
= |
赋值 |
x = y |
3 |
+= |
赋值 |
x += y |
3 |
-= |
赋值 |
x -= y |
3 |
*= |
赋值 |
x *= y |
3 |
%= |
赋值 |
x %= y |
3 |
<<= |
赋值 |
x <<= y |
3 |
>>= |
赋值 |
x >>= y |
3 |
>>>= |
赋值 |
x >>>= y |
3 |
&= |
赋值 |
x &= y |
3 |
^= |
赋值 |
x ^= y |
3 |
|= |
赋值 |
x |= y |
2 |
yield |
暂停函数 |
yield x |
1 |
, |
逗号 |
7 , 8 |
当使用括号时,括号中的运算符会首先被计算。
当多个运算拥有相同的优先级时(比如加法和减法),对它们的计算是从左向右的
|