Javascript 类型转换

终于结束了在象牙塔里的生活,开始苦逼的码农生活了!
开始转战前端,希望自己能够掌握JS。本博客的参考资料为:JavaScript权威指南

Make thing ready

在开始之前,先介绍一张表,如下表所示,是JavaScript类型转换表

转换为字符串数字布尔值对象
undefined“undefined”NaNfalsethrows TypeError
null“null”0falsethrows TypeError
true“true”1throws TypeError
false“false”0throws TypeError
“”(空字符串)0falsenew String(“”)
“123”(数字)123truenew String(“123”)
“one”(非数字)NaNtruenew String(“one”)
0“0”falsenew Number(0)
-0“0”falsenew Number(-0)
NaN“NaN”falsenew Number(NaN)
Infinity“Infinity”truenew Number(Infinity)
-Infinity(无穷大,非零)“-Infinity”truenew Number(-Infinity)
1“1”truenew Number(1)
{}(任意对象)参考下文参考下文true
[](任意数组)“”0true
[9](一个数字元素)“9”9true
[‘a’](其他数组)使用join()方法NaNtrue
function(){}(任意函数)参考下文NaNtrue

对象转换成原始值

JavaScript中的原始值包含undefined、null、布尔值、数字和字符串。而对象除了普通对象,还包含了函数和数组。
原始值就是不可更改的:任何方法都无法更改一个原始值。而原始值的比较是值的比较,只有在它们的值相等时它们才相等。

对象到布尔值的转换

对象到布尔值的转换很简单,所有的对象(包括数组和函数)都转换为true。对于包装对象亦是如此:new Boolean(false)是一个对象,而不是一个原始值,它将被转换成true。

对象到字符串的转换

所有的对象继承了两个转换函数,一个是toString(),一个是valueOf()。第一个函数的作用是返回一个反映这个对象的字符串,第二个函数未明确定义,如果存在任意原始值,将将对象转换为表示它的原始值。由于对象是复合值,而且大多数对象无法真正表示为一个原始值,因此默认的valueOf()方法简单地返回对象本身,而不是返回一个原始值。
JavaScript中对象到字符串的转换经过了如下步骤:

  1. 如果对象具有toString方法,则调用这个方法。如果它返回一个原始值,就将这个值转换成字符串,并返回这个字符串。具体的转换见上表。
  2. 如果对象没有toString方法或者该方法并不返回一个原始值,则调用valueOf方法。如果存在valueOf方法,就调用它。如果返回原始值,将这个原始值转换成字符串,并返回。
  3. 否则,表示没有办法通过这两个方法获得一个原始值,将抛出类型异常。

对象到数字的转换

对象到数字的转换过程中,做了和到字符串的转换一样的事情,但是调用方法的不同。

  1. 如果对象具有valueOf方法,后者返回一个原始值,则JavaScript将这个原始值转换为数字,并返回这个数字。
  2. 否则,如果将对象具有toString方法,后者返回一个原始值,则JavaScript将其转换并返回。
  3. 否则,JavaScript抛出一个类型错误异常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值