运算符

74 阅读2分钟

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 + 11a = 10 + 1 + 1 = 12
// ++aa先加 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