2.js运算符
①运算操作符
a. “+”
第一个作用是两个Number的数字相加
第二个作用是任何东西加字符串都等于字符串
b. - * / % = ()
js
复制代码
// 特殊的除法
0/0
// 结果为NaN
1/0
// 结果为Infinity
0/1
// 结果为0
- * / % = ()的优先级
()的优先级最高 = 的优先级最低
c. ++ -- += -= *= /= %=
js
复制代码
let c = c + 1; 等价于 let c += 1;
let a = 10;
let b = ++a - 1 + a++;
document.write(b + "" + a);
// 执行结果:b = 11 -1 + 11; a = 10 + 1 + 1 = 12
// ++a 是a先加 a++ 是a后加
②比较运算符
">" "<" "==" ">=" "<=" "!="
js
复制代码
// 小栗子
var a = 'a' > 'b';
document.write(a) // 输出为false
reason: 字符串比较的是Ascll码,其中a的的ascll码 小于b的ascll 'a' = "A" + 32 = 113 ; 'A' = 81
// 特殊规则
a = 1 == 1; 输出为true
a = undefined == undefined 输出为true
a = undefined == null 输出为true
a = Infinity == Infinity 输出为true
a = NaN == NaN 输出为false == > NaN不等于任何东西,一急眼自己都不认识
③逻辑运算符(重点)
js
复制代码
&& || !
&& ===> 会先看&&前面的表达式转换为Boolean,如果只有两个表达式的话,第一个为false,
那么直接返回第一个值的结果,否则直接返回第二个值的结果。
// 碰到假就停下返回
// 小栗子 (&& 可以当做短路来判断逻辑)
var a = 1 && 2 + 2; 输出的结果为4
var a = 0 && 2 + 2;输出的结果为0 (0代表false)
2 > 1 && document.write('你真棒') 输出的结果是'你真棒';
|| ===> 如果只有两个表达式的话,如果第一个值是true, 那么直接返回第一个值的结
果,否则返回第二个值的结果
// || 碰到真就返回
! ===> 取反 把这个东西转换为Boolean取反再取反
// 小栗子
var data = {};
var a = !! data;
document.write(a); 输出为true