逻辑运算符:
&& :逻辑与运算符 :总结:都真才真,一假则假
|| 逻辑或运算符 总结:都假才假,一真则真
! 逻辑非运算符
!true 结果false
!false 结果true
非布尔值参与逻辑运算结果不一定是布尔值
隐式真:非0数字,非空字符串
隐式假:“”, 0, NaN,undefined, null
短路语法:
a && b : 如果a真,结果是b;如果a假,结果a
a || b : 如果a真,结果是a;如果a假,结果b
运算符
Math是js内置对象
Math.random(): 随机数; 参数:不书写; 结果是0-1之间的浮点数
Math.pow(,): 幂的运算; 参数:一个参数底数 二个参数指数 结果是幂的计算数值结果
Math.sqrt(): 开方运算 参数:一个参数,要开方的数字 结果:开方数值
Math.PI 圆周率π(属性)
比较运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
=== 全等于
!= 不等于
!== 不全等于
(只要是比较运算符,结果一定是布尔
- 布尔值,null参与运算时,隐式转换。true(1) false(0) null(0), 特别的null参与==,===时不是转换0
- 纯数字字符串参与时也是隐式转换。
- ==等于,在判断两侧关系尽可能让两侧相等。只判断数值是否相同,不判断数据类型是否相等。
- ===全等于,尽可能让两侧关系不等。同时判断数值和数据类型是否相同
- != 不等于,和==是对立面。只要==是true,那么!=一定是false;只要==是false,那么!=一定是true
- !== 不全等于,和===是对立面。只要===是true,那么!==一定是false;只要===是false,那么!==一定是true
- 两侧都是字符串比较,不是比较字符串长短,而是比较字符的Unicode。编码顺序越靠后,越大顺序:数字(0-9),大写字母(A-Z),小写字母(a-z)
赋值运算符
赋值运算符是赋一个基于它右边操作数值的值给它左边的操作数。最简单的赋值运算符是等于(=),将右边的操作数值赋给左边的操作数。那么 x = y 就是将 y 的值赋给 x。
含义:将右侧的数据运算之后,赋值给左边。
+= 加等于
-= 减等于
*= 乘等于
/= 除等于
%= 取余等于
++ 递加
-- 递减
在变量原基础上,进行右侧的运算,将运算的值再赋值给左边的变量。
1 // 声明变量
2 var a = 10, b = 20, c = 30;
3 var sum = (a ++) + (++ b) + (c ++) + (++ a);
4 /*
5 = 10 + 21 + 30 + (++ a) 第二次出现就是再次使用,再次使用都是自加1后的结果
6 = 61 + 12
7 = 73
8 */
9 console.log(sum);
10 console.log(a);
11 console.log(b);
12 console.log(c);
顺序:贴身的(! ++ --)→ 数学 → 比较 → 逻辑 → 赋值
1 /*
2 1优先级: 贴身,数学,比较(结果一定是布尔值),逻辑(与,或),赋值
3 2a++ :使用变量当前值参与运算,a第二次使用是自加1后的结果
4 3真:非0数字,非空字符串
5 a&&b:
6 a||b:
7 */
8 var a = 4;
9 var sum = 1 * (2 + 3) && a++ || 5 > 6 && 7 < 8 || 9;
10 /*
11 = 1 * (2 + 3) && 4 || 5 > 6 && 7 < 8 || 9;
12 = 5 && 4 || 5 > 6 && 7 < 8 || 9; 括号想加
13 = 5 && 4 || false && true || 9 数学比较
14 = 4 || false && true || 9 从左往右 a为真结果为b
15 = 4 || false || 9 a为假结果为假 与与或比较与优先级高
16 = 4 || 9 a或false a为真结果为真
17 = 4 a为真结果为真
18 */
19 console.log(sum);
20 // 第二次出现a = 5
21 console.log(a);
22 console.log(++ a);