javascript中的运算符
qingheluo2016-12-16清河洛468
算术运算符+ 加 - 减 * 乘 / 除
% 求模 ++ 自增 -- 自减
** 幂运算(从右向左计算)特殊情况:Infinity + Infinity; //Infinity
-Infinity + -Infinity; //-Infinity
Infinity + -Infinity; //NaN,正无穷和负无穷相加等NaN
'your age:' + 10 + 20; //your age:1020,被转换成字符串
10 + 20 + 'is youe age'; //30is youe age,没有被转成字符串
...
算术运算符
+ 加 - 减 * 乘 / 除
% 求模 ++ 自增 -- 自减
** 幂运算(从右向左计算)
特殊情况:
Infinity + Infinity; //Infinity
-Infinity + -Infinity; //-Infinity
Infinity + -Infinity; //NaN,正无穷和负无穷相加等NaN
'your age:' + 10 + 20; //your age:1020,被转换成字符串
10 + 20 + 'is youe age'; //30is youe age,没有被转成字符串
'您的年龄是:' + (10 + 20); //您的年龄是:30,没有被转成字符串
100 + true; //101,true转成数值为1
100 + ''; //100,''转成了0
100 - null; //100,null转成了0
赋值运算符
= += -= *= /= %=
关系运算符
== 等于 != 不等于
=== 恒等(值和类型) !== 恒不等
> < >= <=
操作非数值时要遵循一下规则:
1.两个操作数都是数值,则数值比较;
2.两个操作数都是字符串,则比较两个字符串对应的字符编码值;
3.两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;
4.两个操作数有一个是对象,则先调用valueOf()方法或toString()方法,再用结果比较;
特殊值
null == undefined:true
NaN == NaN:false
undefined == 0:false
null == 0:false
'100' == 100:true
逻辑运算符
&& 逻辑与 || 逻辑或 !逻辑非
?. 链判断获取,用于判断一个对象中是否存在某个属性,如果存在返回该属性值,如果不存在返回undefined
obj?.prop // 对象属性是否存在
obj?.[expr] // 同上
func?.(...args) // 对象方法是否存在
?? 判断null或undefined
val ?? value
只有运算符左侧的值为null或undefined时,才会返回右侧的值
如果 ?? 和多个其他逻辑运算符一起使用,必须用括号表明优先级,否则会报错
&&和||中的短路操作:
逻辑与运算中表现为从前向后寻找false项,一旦找到false项停止向后查找并返回该项的值,如果未找到false项返回最后一项的值
逻辑或运算中表现为从前向后寻找true项,一旦找到true项停止向后查找并返回该项的值,如果未找到true项返回最后一项的值
位运算符
& 位与 | 位或 ~ 取反
^ 异或 << 左移 >> 右移
其他运算符
. 取对象成员 [] 索引取值 ()函数调用
delete 删除变量 new 开辟新的内存空间
typeof 获取数据类型 void 产生undefined
?: 三元运算符
instanceof 类型检测
typeof运算符在检查基本数据类型的时候非常好用,但检测引用类型的时候,我们并不想知道它是不是对象,而是想知道它到底是什么类型的对象
因为数组也是object,null也是Object,这时应该采用instanceof运算符
变量名 instanceof 数据类型名
var box = [1,2,3];
alert(box instanceof Array); //true
当使用instanceof检查基本类型的值时,它会返回false
运算符优先级
在一般的运算中,我们不必考虑运算符的优先级,因为可以通过圆括号来解决这种问题
但如果没有使用圆括号强制优先级,我们必须遵循以下顺序:
. [] ():对象成员存取、数组下标、函数调用等
++ -- ~ ! delete new typeof void:一元运算符
* / % **:乘法、除法、取模、求幂
+ - +:加法、减法、字符串连接
<< >> >>>:移位
< <= > >= instanceof:关系比较、检测类实例
== != === !==:恒等(全等)
&:位与
^:位异或
|:位或
&&:逻辑与
||:逻辑或
?::三元条件
= x=:赋值、运算赋值
,:多重赋值、数组元素