1、运算操作符
"+"
(1)数学运算、连接字符串
(2)任何数据类型加字符串都等于字符串
“++”
var a = 10;
var b = ++a - 1 + a++;
console.log(b) // 21
console.log(a) // 12
"+="
var a = 10;
a += 10 * 2;
console.log(a) // 30
2、比较运算符
>、<、==、>=、<=、!=
比较的结果是布尔值,真为true,假为false
"10" > "8" // false
字符串比较的是asc码的顺序
3、逻辑运算符
undefined、nul、NaN、""、0、false转换成布尔值是false
(1)&&
var a = 1 && 2; // 2
var b = 0 && 2; // 0
var c = 1 && 2 && 3; // 3
var d = 1 && null && 4; // null
先看第一个表达式转换成布尔值的结果,如果为false,就返回第一个表达式的值;如果为true,就会看下一个表达式是否是最后一个表达式;如果是最后一个表达式,就返回这个表达式的值;如果不是最后一个表达式,就判断这个表达式转换成布尔值的结果,如果为false,就返回这个表达式的值;如果为true,就会看下一个表达式是否是最后一个表达式;如果是最后一个表达式,就返回最后这个表达式的值;如果不是最后一个表达式,就判断这个表达式转换成布尔值的结果,以此类推
(2)||
var a = 1 || 2; // 1
var b = 0 || 2; // 2
var c = 1 || 2 && 3; // 1
var d = 1 || null && 4; // 1
先看第一个表达式转换成布尔值的结果,如果为true,就返回第一个表达式的值;如果为false,就会看下一个表达式是否是最后一个表达式;如果是最后一个表达式,就返回这个表达式的值;如果不是最后一个表达式,就判断这个表达式转换成布尔值的结果,如果为true,就返回这个表达式的值;如果为false,就会看下一个表达式是否是最后一个表达式;如果是最后一个表达式,就返回最后这个表达式的值;如果不是最后一个表达式,就判断这个表达式转换成布尔值的结果,以此类推
(3)!
var a = !123;
将表达式转换成表达式再取反