JS------数据类型转换
参考学习:https://blog.csdn.net/just_do_it2009/article/details/71079784 这篇文章太赞!
JS 数据类型转换 方法主要有三种
1.转换函数、
2.强制类型转换
3.利用js变量弱类型转换。
js的自动装箱(临时创建一个包装对象)
两个与类型转换有关的函数:valueOf()和toString()
valueOf()的意义是,返回这个对象逻辑上对应的原始类型的值。
toString()的意义是,返回这个对象的字符串表示。用一个字符串来描述这个对象的内容。
js内部用于实现类型转换的4个函数
这4个方法实际上是ECMAScript定义的4个抽象的操作,它们在js内部使用,进行类型转换。我们js的使用者不能直接调用这些函数,但是了解这些函数有利于我们理解js类型转换的原理。
ToPrimitive ( input [ , PreferredType ] )
ToBoolean ( argument )
ToNumber ( argument )
ToString ( argument )
类型转换分为显式类型转换(强制转换)和隐式类型转换(自动类型转换)
[]+[]
// ""
// 提示:ToPrimitive([])返回空字符串
[] + {}
// "[object Object]"
// 提示:ToPrimitive({})返回"[object Object]"
123 + { toString: function () { return "def" } }
// "123def"
// 提示:ToPrimitive(加号右边的对象)返回"def"
{} + []
// 0
// 结果不符合我们的预期:"[object Object]"
// 提示:在Chrome中,符号左边的{}被解释成了一个语句块,而不是一个对象
// 注意在别的执行引擎上可能会将{}解释成对象
// 这一行等价于'+[]'
// '+anyValue'等价于Number(anyValue)
({}) + []
// "[object Object]"
// 加上括号以后,{}被解释成了一个对象,结果符合我们的预期了
四则运算符
它有以下几个特点:
运算中其中一方为字符串,那么就会把另一方也转换为字符串
如果一方不是字符串或者数字,那么会将它转换为数字或者字符串
那么对于除了加法的运算符来说,只要其中一方是数字,那么另一方就会被转为数字
比较运算符
如果是对象,就通过 toPrimitive 转换对象
如果是字符串,就通过 unicode 字符索引来比较