JavaScript类型转换

Javascript属于弱类型语言,在取值类型非常灵活的同时,需要了解它的类型转换机制,避免在一些地方混淆不清。


一、原始值到原始值

1.布尔值

当js期望一个boolean值时,可以提供任何类型给它,js会自行转换类型。真值为true,假值为false。


        所谓的假值,个人觉得常见的有null,undefined,”“(空串),Nan。 注意:任意对象(包括空对象{},空数组[ ],Infinity和-Infinity也都是真值,转换为true。


2.Nunber

 true  为 1   false 为0。然后注意一下产生NaN的情况。


parseInt


parseFloat 


二、原始值到对象

1.原始值通过调用String() Number()   Boolean()构造函数,转换为各自的包装对象。(显示转换).

x + ""  等价于 String(x)
+x   等价于Number(x)
!!x   等价于Boolean(x)

2.null和undefined  例外,所有期望转换他们的地方,都会throw  TypeError


三、对象到原始值的 

1.对象到Boolean型的转换:所有的对象(include数组和函数)都转化为true。

比较容易出错的一个地方:new   Boolean(false)  它会转换为true,因为它是一个包装类对象。
       
  2.对象到字符串:——>toString()——>valueOf()

(1)对象具有toString()方法,则调用这个方法,如果返回一个原始值,转换为字符串(不是字符串)。( 多数情况下,对象是继承自Object类,均带有toString()方法,即使有时候自带的toString()没有多大意义。目前遇见的只有在Object.create()传入null作为参数的时候会出现没有toString()方法的情况。
(2)对象没有toString()方法,则调用valueOf()方法,若存在。如果返回值是原始值,Javascript会转换为字符串。

(3) 否则,无法转换,throw  TypeError

3.对象到字符串:——>valueOf()——>toString()   具体情况和转换为字符串类似。

空数组转换为0


四、其他相关

1.转换和相等性:在用 ==  运算符判断相等时,中间对有默认的类型转换行为发生。  === 恒等运算符则不做任何类型转换。

2.   +  可执行加法运算和字符串连接,   在有运算值为对象时,会执行对应的到字符串或者数字的转换。   -  号会尝试把两个操作数转换为数值。

3.   var now = new Date() ,now到字符串的转换(直接调用toString(),隐式转换),调用valueOf()转换为数值,毫秒数。
















































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值