操作符包括算数操作符(如加号和减号),位操作符,关系操作符和相等操作符
在ecmaScript 中,在操作符应用于对象时,相应的操作符通常都会调用对象的valueOf()或者toString()方法
1.递增递减操作符:
应用时会先将待操作的变量转换为数字值,否则设置为NaN,在执行操作
2.一元加和减操作符
在对非数值应用一元加操作符时,该操作符会像Number()转型函数一样对这个值执行转换。换句话说,布尔值false和true将被转换为0和1,字符串值会被按照一组特殊的规则进行解析
var aa="01";
var bb="1.1";
var cc="zz"
var dd=false;
var ee=1.1;
var o={
ss:1
}
var aa1=+aa; //1
var bb1=+bb;//1.1
var cc1=+cc;//NaN
var dd1=+dd;//0
var ee1=+ee;//1.1
var o1=+o.ss;//1
3.布尔操作符
1.逻辑非
逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反
逻辑非操作符遵循下列规则:
如果操作数是:
一个对象,返回false
一个空字符串, 返回true
一个非空字符串, 返回false
数值0 返回true
任意非0数值 返回 false
null 返回true
NaN 返回true
undefind 返回true
逻辑非操作也可以用于将一个值转换为与其对应的布尔值。而同时使用来那个逻辑非操作符,实际上就会模拟Boolean( )转型函数的行为
2.逻辑与
逻辑与可以应用于任何类型的操作数,而不仅仅是布尔值。在有一个数不是布尔值的情况下,逻辑与操作就不一定返回布尔值;他遵循下列规则:
如果有一个操作数是null 返回null
如果有一个操作数是NaN 返回NaN
如果有一个操作数是undefined 返回undefined
3.逻辑或
与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值
4.乘性操作符
1.乘法
在操作数为非数值的情况下会执行自动的类型转换。如果参与乘法计算的某个操作数不是数值,后台会先使用Number()转型函数将其转换为数值。也就是说空字符串将被当作0,true将被当作1
规则:
有一个操作数是NaN,则结果是NaN;
infinity与0相乘,结果 NaN
2.除法
与乘法类似
规则:
除数是0或者Infinity 返回NaN
3.求模
5 % Infinity 返回5 (除数无穷大)
Infinity % 5 返回NaN (被除数无穷大)
5 % 0 返回NaN (被除数有限大而除数是0)
5.加性操作符
1.加法
Infinity加Infinity 返回Infinity
-Infinity加-Infinity 返回-Infinity
Infinity加-Infinity 返回NaN
5+5 返回10
5+“5” 返回“55”
var num1=5;
var num2=10;
var message="this sum of 5 and 10 is "+num1+num2;
console.log(message);
输出:
this sum of 5 and 10 is 510
var num1=5;
var num2=10;
var message="this sum of 5 and 10 is " + (num1+num2);
console.log(message);
输出:
this sum of 5 and 10 is 15
2.减法
Infinity-Infinity //NaN
-Infinity-(-Infinity) //NaN
Infinity-(-Infinity) //Infinity
-Infinity-Infinity //-Infinity
var result1 = 5 - true; //4 true被转换成了1
var result2 = NaN-1; //NaN
var result3 = 5 - "2"; //3 "2"被转换成了2
var result4 = 5 - ""; //5 ""被转换成了0
var result5 = 5 - null; //5 null被转换成了0
4.关系操作符
在比较字符串符时,实际比较的是两个字符串中对应位置的每个字符的字符编码值
任何操作数与NaN比较,都返回false
"Brick"<"alphabet" //true "Brick".toLowerCase()<"alphabet".toLowerCase(); //false "23" < "3" //true 2的字符编码50 3的字符编码51 "23" < 3 //false "a" < 3 //false
5.相等操作符
1.不全等:
null和undefined 是相等的
要比較相等性之前,不能將NULL和undefined转换成其他任何值
如果有一个操作数是NaN,则相等操作符返回false,而不相等操作符返回true。即使两个操作数都是NaN,相等操作符也返回false;因为按照规则,NaN不等于NaN.
null == undefined
true
"NaN"==NaN
false
NaN==NaN
false
NaN != NaN
true
false == 0
true
true == 1
true
true == 2
false
undefined == 0
false
null == 0
false
1.全等:
除了在比较之前不转换操作数之外,全等和不全等操作符没什么区别。
555 === "555"
false
555 == "555"
true
555 !== "555"
true
555 != "555"
false
undefined == null //null与undefined是不同类型的值
true
undefined === null
false
6.条件操作符
var max = (num1 > num2) ? num1 :num2;
7.赋值操作符
每个主要算术操作符都有对应的复合赋值操作符。这些操作符如下所示:
var nn = 10;
nn += 10;
20
var num = 10;
num =num +10;
20
var ss=5;
ss *=5;
25
var dd=5;
dd /=5;
1
var ff=5;
ff %=5;
0
var ee=5;
ee -=2;
3
8.逗号操作符
使用逗号操作符可以在一条语句中执行多个操作