day02 运算符
1 算数运算符: + - * / % ^(**);
/ 除
% 取余
^(**) 幂 2^3=8;
⭐取余场景 用来判断是否能被整除
浮点数运算出现问题 还是底层二进制在转换时 二进制位的问题(精度丢失等等)
(计算机在进行运算时,底层使用的是二进制补码,所以在数据的转换中出现精度问题)
浮点数的范围其实是大于int类型的
2 运算符优先级
⭐ JavaScript中 优先级越高越先被执行,优先级相同时以书写从左向右执行
* / % 的优先级高于 + - 先乘除后加减 ()可以提升运算优先级
Math.PI Π
- Math.pow(a,b) a的b次方
Math.toFixed(n) 保留n位小数
3 赋值运算符 = += -= *= /=
- '=' 赋值运算符 将等式右边的表达式 赋值给左边⭐变量⭐
(1). num += x --------------num = num + x
(2). num -= x ---------------num = num - x
(3). num /= x ---------------num = num / x
(4). num *= x ---------------num = num * x
debugger调试
4 一元运算符 ++ -- !
- 根据表达式的个数 分为一元运算符 二元运算符 三元运算符
常量 变量都属于表达式的范畴
++a 先+1 在运算
a++ 先运算 在+1
- 场景: 通过计数用来计算来运算次数
5 表达式: 1 原地有返回值 2 代码量比较短
- num++; 是有返回值 可以赋值给另外一个变量
- (1). 表达式就是由变量和算术运算符组成的一个新的变量 数字 运算符 变量等以能求的数值的有意义的排列方法所得的组合
- (2). 返回值 上述的新变量的结果就是表达式的返回值
6 比较运算符: > < <= >= == === !==
🚩比较运算符的结果是 boolean类型 返回值 true/false
- ⭐== ⭐ 左右两边是否相等 将数据转换为对应的数值 ----不同类型比较时有隐式转换
- ⭐!=⭐ 不等 只比较左右的数据 不比较类型
- ⭐===⭐ 全等 左右两边不仅比较值 还会对🚩数据类型🚩进行比较
- ⭐!==⭐ 不全等
🚩🚩 NaN不等于任何值 包括自己
🚩🚩 浮点型进行计算或者比较 会有二进制位精度丢失问题 (内存方面)
所以 一般调用函数库进行计算
注意: 比较的细节方面
⭐⭐⭐ 字符串比较:
(1) 是比较的字符对应的ASCII码 从左往右依次比较
如果第一位一样再比较第二位,以此类推
- '2'>'19' 字符串在比较时 逐位进行比较 '2'对应ASCII码表的值>'1'ASCII码值 所以 返回值为true;
(2) 不同类型之间比较会发生隐式转换 - 最终把数据隐式转换转成Number类型再比较 非字符串的数字转换后会变成NaN
- ----开发中如果需要进行比较精准的比较 更倾向于 '==='
7 逻辑运算符: && || !
- && 逻辑与 and 有假则假
|| 逻辑或 or 有真则真
! 逻辑非 not 取反值 -
在布尔运算中 ,''-空字符串 NaN undefined 0 false null 被认定为假
逻辑运算符
短路运算符: 只存在与 && 和 || 中 ❗❗❗逻辑中断很重要 会影响表达式的最终结果
⭐⭐当表达式左边代码可以去定整个表达式的结果时,⭐⭐右边的代码就可以不执行 (表达式不执行 变量就不会发生变化)----提高运算效率
♥🚩左边表达式可以确定整个式子的真假 直接返回左边表达式结果 不在运算右边的代码
♥🚩左边表达式无法确定整个式子的真假 运算右边的表达式结果 并返回
逻辑与 &&
表达式1 && 表达式2
当1 为假 返回表达式1的值 ------------------ 最终结果是假
当1 为真 返回表达式2的值逻辑或 ||
表达式1 || 表达式2
当1 为真 返回表达式1的值 ------------------- 最终结果是真
当1 为假 返回表达式2的值
短路逻辑运算
8 运算符优先级 计算关系 判断逻辑
- 1 . (小括号) 一元运算符(++,--,!) 算术运算符 关系运算符(><= >=< ) 相等运算符(=== !== == !=) 逻辑运算符(先&&后||) 赋值运算符
- 注意 一元运算符: 🚩 ! 符号的优先级🚩也是很高的
运算符的优先级顺序
9 语句+表达式
- 表达式执行结果会返回一个值, 一般代码量较小
- 语句的代码量较长 用来描述一个事件