js 的数据类型转换

一直对js的类型转换一直半解,今天理一下思路,首先说一下几个特殊的数值

null

  null是特殊的object,故 typeof null 返回object,

  null派生于undefined ,故 null == undefined

NaN

  NaN是特殊的Number, NaN与任何值(包括自己)进行比较都返回false

Boolean

  只有两值,false和true

----------------------------------------------------------------------------------------- 

接下来,来说一下进入正题:

toString():除了null和undefined,其它值都有此方法,这也是toString()与String()的区别,而且此方法可以传一个基数

  而对于非数值,toString设置参数是无效的,var a = "1234"; a.toString()  返回的是1234而非1234的二进制表示

String():如果传入的参数可以使用toString(),则返回的结果与toString()无基数的情况一致

  String(null)返回null   String(undefined)返回undefined

  String(true/false)返回true/false

------------------------------------------------------------------------------------------------------------

parseInt()/pasefloat():用于把String类型转换成Number类弄,对于基它类型调用此方法都会返回NaN

  机制:从每一个非空格开始直到找到一个非有效字符(空格,字母,对于parseInt来说小数点是是非有效的,而对于parseFloat第二个小数点才是无效的),然后把找到的结果再转换成Number

  即:parseInt(null/undefined/true/false/NaN)都返回NaN,而Number类弄直接返回原值  

    parseInt(空格/空字符串) // NaN  因为找不到有效字符,返回null

    parseInt(空格123) // 123    parseInt(空格123空格) // 123    

Number():用于把整个值,而不是部分值转换成数值,如果转换失败则返回NaN(空格与空字符串是可以转换的)

  Number(null) //0

  Number(true) //1    Number(false) //0

  Number(NaN/undefined) //NaN

  Number(空格/空字符串) // 0

  Number('123.123.3') // NaN 123.123.3 不能转换成数值

---------------------------------------------------------------------------------------------------------------------------

Bollean():返回true/false

  Bollean(null/undefined/0/空字符串) //false

===========================================================================

对于object类的toString()/valueOf()

未完待续

  

  

原文地址:https://www.cnblogs.com/jellychow/p/3148881.html