1. 加减乘除运算符 + - * / % () ++ —
- 优先级:括号运算 > 普通运算 > 赋值
- 功能:数学运算、字符串拼接
- 任何数据类型的值 + 字符串,结果都是字符串
- /
0 / 0 -> NaN ; "a" / "b" -> NaN ; NaN / 1 -> NaN
typeof NaN -> "number"
1 / 0 -> Infinity ; -1 / 0 -> -Infinity
typeof Infinity -> "number"
- %
5 / -3 -> 2 ; -5 % 3 -> -2;
取余结果与被除数正负号一致
- ++, —
- 前++ 后++
- 前— 后—
2. 比较运算符 > < >= <= == === != !==
- number - number
- number - string, string -> number
1 > "2" -> false
- string - string, 从左到右,依次比较每一个位置上字符对应的ASCII码,直到比较出大小为止
- 相等 ==, != 是不看数据类型的
1 == "1" -> true
- 全等 ===, !== 需要看数据类型也是否相等
1 === "1" -> false
- NaN与包括自己在内的任何东西都不相等:
NaN === NaN -> false; NaN == NaN -> false
3. 判断分支语句
1. IF 语句
- 多个条件互斥时,相对于使用多个if语句, 使用if…else…语句可以减少判断次数。
2. Switch 语句
- 不要忘记break!
- 范围判断变量值用 true
switch(true) { case condition: }
(此场景建议使用 if 语句
IF vs Switch 使用场景
- Switch:定值,有限个数
- IF: 范围判断
4. 逻辑运算 与&& 或|| 非!
值为 **undefined, null, NaN, "", 0, false**
时,判断为假;除此以外全部为真
与 && sta1 && sta2 && sta3 && ...
- sta1 为真时,继续向后判断sta2
- 出现第一个为假的值时,返回此假值,结束判断
- 前面的语句全为真时,返回最后一个语句的值
- 总结:有一个假则假,全为真才真
或 || sta1 || sta2 || sta3 || ...
- sta1 为假时,继续向后判断sta2
- 出现第一个为真的值时,返回此真值,结束判断
- 前面的语句全为假时,返回最后一个语句的值
- 总结:有一个真则真,全为假才假
非 !
- !sta 总是返回 boolean