隐式转换
- 当数值遇到逻辑判断或数学运算时会出现隐式转换
- 逻辑判断是将数值隐式转换成boolean值
- 数学运算是将数值隐式转换成number值
falsefy
- falsefy表示通过Boolean转换后为false的值。
- falsefy只有6个值:undefined null '' 0 NaN false,其余的值都是true
- 逻辑判断包含 ! && || if while 三元 等,其中!的优先级最高
引用值
- 引用值参与任意类型的数学及比较运算,都会先调用自身的valueOf方法,如果valueOf返回的是引用值本身,会继续调用其toString方法,然后再参与运算。如果valueOf返回的是原始值,则通过原始值直接参与运算。
- 例如new Date()参与运算时,使用的是其valueOf的值
- 特殊:两边都是引用值时,通过==比较的是引用值地址。
- 特殊:引用值进行+运算时,调用的是toString,和valueOf没有关系
undefined
- undefined通过Number转换后为NaN
数学运算/大小比较
- 进行+ - * / 运算或 < > ==比较运算时,数值会进行Number转换。
- 特殊:NaN和任意值包括自己无法和任意值参与运算
- 特殊:null和undefined相等,但和其他任意值都不相等
- 特殊:任意类型的值与字符串相加,都会通过String包装类进行转换,然后再拼接在一起。
- 特殊:字符串之间比较,是通过uniCode码进行比较
网友评论