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 字符索引来比较
posted @ 2019-05-04 16:25  princeness  阅读(107)  评论(0编辑  收藏  举报