运算符主要用于连接简单表达式,构成一个复杂的表达式,而表达式是为了得到返回值,js中,表达式必定会返回一个值。(js中,预期为值的地方都可以使用表达式)
JS的运算符:
1.有一些运算符可以用于任何数据类型的计算,比如typeof运算符
2.大部分运算符希望操作数是特定的类型,然后计算出特定的类型值(因此,运算符会根据需要对操作数进行数据类型转换,比如*号,只能用于操作数值,那么运算符两边是字符串,也会先将字符串转换成数值然后相乘)
3.有些对不同的数据类型有不同的含义。比如算术运算符中的加法运算符
常见的JS运算符包括:算术运算符,比较运算符,逻辑运算符,赋值运算符。
一.算术运算符
-
-
- / % ++ –
算术运算符的返回值是数值(加法运算符例外),即无论运算符两边是何种数据类型,都会将其转为数值在求值,如果无法转为数值,则值为NaN
- / % ++ –
-
加法运算符:
1.两边数据类型为数值,直接相加
2.两边有一个数据类型为字符串类型,则将另外一个转为字符串类型,然后拼接到一起
3.有一侧为对象,根据另一侧数值类型,调用其valueof或tostring方法,然后计算
4.如果只有右侧有字符串,左侧无值,将其转为数字
5.如果只有右侧有数字参数,则返回其正数值
自增/自减运算符:
a++:返回值为a;++a返回值为a+1
a–返回值为a;–a返回值为a-1
二.比较运算符
== === != !== > >= < <=
比较运算符返回值为布尔值:true/false,需将运算符两侧数据类型转化为相同数据类型在比较(绝对相等运算符===除外)
绝对相等运算符:运算符两边数据类型相同,值相等才返回true,否则返回false
三.逻辑元算符
! && ||
!a:自动将表达式a转为布尔值,然后取反
a&&b:自动将a和b转为布尔值,若a为true,则返回b;若a为false,则返回a
a||b:自动将 a和b转为布尔值,若a为true,则返回a;若a为false,则返回b
四.赋值运算符
x = y;
x += y;
x -= y;
x *= y;
x /= y;
x %= y;
x >> y;
x << y;
x >>> y;
x &= y;
x |= y;
x ^= y;
五.位运算符
| & ~ ^ << >> >>>
位运算符为二进制运算符,返回数值,将运算符两侧表达式转为二进制数,比较每一位数值
或运算符 | :比较两个表达式的二进制位,有一个为1,则为1,否则为0;
3|4 // 7
3: 00000000011
4: 00000000100
3|4 : 00000000111 //7
与运算符 & :比较两个表达式的二进制位,两个都是1才为1,否则为0;
3&4 //0
3: 00000000011
4: 00000000100
3&4 : 00000000000 //0