算数运算
进行算数运算时,先将其他类型数据转换成数值型,再计算,+ 除外,+进行级联运算。
不同类型转换成数值型:
null、false、空字符串 ‘’、空数组[] = 0;
undefined、含有非数字的字符的字符串、对象、数组 = NaN 。
注:如果数组只有一个元素,那么对这个元素再进行上述判断
例: var x = Number( [ ‘12’ ] ) ; // x返回12
运算规则:任何数与NaN进行运算,结果都是NaN,NaN与任意数据进行比较,结果也都是false。
逻辑运算
- 不同类似的数据变成布尔型结果是什么?
空字符串’’、false、null、0、NaN、undefined 为false;
空对象{}、所有数组[] 为true。
&&运算
从左往右看,遇到“操作数”的布尔型值为false时,就返回该“操作数”;都是true,就返回第二个个“操作数”。
||运算
从左往右看,遇到“操作数”的布尔型为true时,就返回该值;都是false,就返回第二个“操作数”。
&& 和 || 同时存在的运算
当 || 在 && 的前面时,|| 运算中,遇到为true的操作数,就直接输出值,后面所有数据都不进行运算。
例: 1<3 || 2<3 && 3
//返回true
当 && 在 || 的前面时,在其他语言中,若第一个操作数为假,就不往后进行执行语句了;但在JavaScript中,还要往后进行。
例: 0 && 1 || false
// 返回false,先对 0 && 1 进行运算,返回 0;再对 0 || false 进行运算,返回 false。
运算符优先级
() > ! > 算数运算符 > 比较运算符 > 逻辑运算符 > 三目运算符 > 赋值运算符