类型转换

类型转换

Number(x),x 能转成功的有 1 数字,2 纯数字字符串(会自动去掉前后空格,parseInt 也是),3 空字符串,4true,5false,6null,7[最多只有一个元素且是 1,2 情况];x 转化过程 1.先调用 valueOf 2.如果返回对象则调用 toString 3.还是对象就报错

1 Number(123|'123') //123
2 Number('123abc') //NaN
3 Number.parseInt('123abc') //123
4 Number(true|false) //1|0
5 Number(null|undefined) //0|NaN
6 Number([]) //0
7 Number([1]) //1
8 Number({}) //NaN

String(x) x 转化过程,1.调用 toString,2.返回是对象再调用 valueOf,3.还是对象报错

1String(122) //"122"
2String('123') //"123"
3String(true|false) //"true"|"false"
4String(undefined|null)//"undefined"|"null"
5String({}) //"[object Object]"
6String([1,2,3]) //"1,2,3"

Boolean(x) x 为 undefined、null、-0、+0、NaN、''、为 false,其余全部为 true

1Boolean(new Boolean(false)) //true

自动转换

自动转换场景

  • 不同类型的数据相互运算(123+‘abc’)
  • 对非布尔值类型的数据求布尔值(if(‘abc’){})
  • 对非数值类型的值使用一元运算符(+ -)

自动转化规则

  • 预期是什么类型的值就调用该类型转换函数
  • 如果该位置预期即可以是字符串也可以是数值,转化为数值
  • 建议显示类型转换
  • 除了加法运算符(+)有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。
  • 一元运算符也会把运算子转成数值。+true //1

Es2015新特性
加密、解密

评论