js类型转换

强制类型转换

Number() 转换成数字,无法转换成数字的则返回NaN。

String() 可以将任何类型转换成字符串

Boolean()  可以将任何类型的值转换成布尔值。返回 false 的有:0、false、undefined、‘’、null、undefined

下面的链接中,最后面列举出来一些常见的值转换为number、string 和 boolean 后的值

https://www.runoob.com/js/js-type-conversion.html

隐式类型转换

需要了解运算符优先级https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

  • 四则运算计算原始值

+ 中只要其中一个是String类型,另一个值就会被转化为String类型,否则运算符两边的值都会被转化为Number类型。

  • 四则运算计算引用值

引用值调用toString转换为字符串,然后按照四则运算计算原始值的规则进行计算。(再调用toString之前还会调用valueOf方法返回原始值)

  • &&、||、! 调用Boolean()
  • If语句 调用Boolean()
  • 关系型运算符计算原始值(< > <= >= ==  !=)

调用Numbe,如果两边都是字符串,则逐为对比UNICODE标准字符集

特殊情况

null == null // ture

undefined == undefined // true

undefined == null /true

NaN 不等于任何数

  •  关系型运算符计算引用值(< > <= >= == !=)

如果两个都是引用值,比较栈内存的地址,只有一个则引用值调用toString转换为字符串,然后按照关系型运算符计算原始值的规则进行计算。(再调用toString之前还会调用valueOf方法返回原始值)(数组的toString方法返回‘’,对象的toString返回‘[object,Object]’)

[] == 0 // true   [].toString()//'' => Number('')//0 == 0

![] == 0 // true    !Boolean([])//false => Number(false)//0 == 0

![] == [] //`true !Boolean([])//false => Number(false)//0 == [].toString()//'' =>Number(‘’)//0

[] == [] // false   对比地址

{} == {} // false  对比地址

!{} == {} // false !Boolean({})//false => Number(false)//0 == {}.toString()//'[object,Object]' => Number(’[object,Object]’)//NaN

  • !== === 不进行转换
原文地址:https://www.cnblogs.com/wangjie-nf/p/11484007.html