03-表达式与操作符
# 表达式和运算符
# 算数表达式
# 基本运算
# 隐式类型转换
如果参与数学运算的某操作数不是数字型,那么 JavaScript 会自动将此操作数转换为数字型
3 * '4' //12
1
字符串和 '+' 并用除外,此时 '+' 为连字符,表示字符串拼接。
隐式转换的本质是内部调用Number0函数
true + true // 2
false + 2 // 2
3 * '2天' // NaN
1
2
3
2
3
# 有关 IEEE754
在JavaScript中,有些小数的数学运算不是很精准
0.1 + 0.2 //0.30000000000000004
1JavaScript 使用了 IEEE754 二进制浮点数算术标准,这会使一些个别的小数运算产生“丢失精度”问题
IEEE754二进制浮点数算术标准是计算机底层编译标准,了解即可!
解决办法:在进行小数运算时,要调用数字的
toFixed()
方法保留指定的小数位数// toFixed() 方法表示保留几位小数,结果是字符串 (0.1 + 0.2).toFixed(2) // "0.30" // 使用 Number() 转为数字 Number((0.1 + 0.2).toFixed(2)) // 0.3
1
2
3
4
5
# Math中的运算方法
JavaScript 中没有提供幂计算、开根号的运算符。需要使用 Math 对象的相关方法进行计算。
Math.ceil()
向上取整;Math.floor()
向下取整
# 关系表达式
两个等号 ==
运算符不比较值的类型,它会进行隐式转换后比较值是否相等,三个等号===
运算符,不仅比较值是否相同,也比较类型是否相同。
NaN 不自等,NaN == NaN
和 NaN === NaN
结果都是 false。可以使用 isNaN() 函数判断值是否为 NaN。
isNaN(NaN) // true
isNaN(5) // false
1
2
2
但 isNaN() 也不好用,它的机理是:只要该变量传入 Number() 的执行结果是 NaN,则 isNaN() 函数都会得到 true。
isNaN(undefined) // true
isNaN('3天') // true
isNaN(null) // false
1
2
3
2
3
# 逻辑表达式
逻辑运算的优先级是:非→与→或
# 赋值表达式
- 可以连续赋值,
a = b = c = 10
- 快捷赋值,
+=
之类的 ++a
和a++
的区别
# 综合表达式
运算顺序:非运算→数学运算→关系运算→逻辑运算
编辑 (opens new window)
上次更新: 2023/06/04, 12:34:19