数据类型转换
数据类型转换
强制转换
强制转换主要指使用Number
、String
和Boolean
三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。
Number()
原始类型的值主要是字符串、布尔值、undefined和null,它们都能被Number转成数值或NaN。
Number
背后的规则:
调用对象自身的
valueOf
方法。如果返回原始类型的值,则直接对该值使用Number
函数,不再进行后续步骤。如果
valueOf
方法返回的还是对象,则改为调用对象自身的toString
方法。如果toString
方法返回原始类型的值,则对该值使用Number函数,不再进行后续步骤。如果
toString
方法返回的是对象,就报错。
toString()
,它的作用是返回一个反映这个对象的字符串;对于值类型数据(
number
、string
、boolean
、null
和undefined
)使用而言,其效果相当于类型转换,将原类型强转为字符。对于数组Array会以逗号分隔返回。
对于对象,返回
[object objectname]
,其中 objectname 是对象类型的名称。
valueOf()
,将对象转换成原始类型的值(数值、字符串和布尔值等),并返回;
String()
原始类型值的转换规则
数值:转为相应的字符串。
字符串:转换后还是原来的值。
布尔值:true转为"true",false转为"false"。
undefined:转为"undefined"。
null:转为"null"。
String
方法背后的转换规则,与Number
方法基本相同,只是互换了valueOf
方法和toString
方法的执行顺序。
先调用对象自身的toString方法。如果返回原始类型的值,则对该值使用String函数,不再进行以下步骤。
如果toString方法返回的是对象,再调用原对象的valueOf方法。如果valueOf方法返回原始类型的值,则对该值使用String函数,不再进行以下步骤。
如果valueOf方法返回的是对象,就报错。
Boolean()
除了以下六个值的转换结果为false
,其他的值全部为true
。
http://javascript.ruanyifeng.com/grammar/conversion.html https://segmentfault.com/a/1190000008432611
原始值/原始类型值指的是['Null','Undefined','String','Boolean','Number']五种基本数据类型之一
隐式类型转换
隐式类型转换是这样的:预期什么类型的值,就调用该类型的转换函数。比如,某个位置预期为字符串,就调用String函数进行转换。如果该位置即可以是字符串,也可能是数值,那么默认转为数值。
Last updated