最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript中的object转换成number或string规则介绍_javascript技巧

来源:懂视网 责编:小采 时间:2020-11-27 21:31:19
文档

JavaScript中的object转换成number或string规则介绍_javascript技巧

JavaScript中的object转换成number或string规则介绍_javascript技巧:在JavaScript程序编写过程中,根据不同的上下文,JS会自动将object转换成number或者string后再处理。这种自动转换的规则如下: object自动转换成string的规则: 1.如果object所属类覆写了toString()方法,则调用该方法。如果toString()调用
推荐度:
导读JavaScript中的object转换成number或string规则介绍_javascript技巧:在JavaScript程序编写过程中,根据不同的上下文,JS会自动将object转换成number或者string后再处理。这种自动转换的规则如下: object自动转换成string的规则: 1.如果object所属类覆写了toString()方法,则调用该方法。如果toString()调用

在JavaScript程序编写过程中,根据不同的上下文,JS会自动将object转换成number或者string后再处理。这种自动转换的规则如下:

object自动转换成string的规则:

1.如果object所属类覆写了toString()方法,则调用该方法。如果toString()调用的返回结果为Primitive(string、number、boolean、undefined、null),则将该Primitive值转换成string后返回。

2.如果object所属类没有覆写toString()方法 – toString()调用的返回结果为”[object Object]“;或者覆写了toString()方法但该方法返回结果为对象。那么JS将调用object的valueOf()方法,如果valueOf()调用的返回结果为Primitive(string、number、boolean、undefined、null),则将该Primitive值转换成string后返回。

3.如果上述两点均无法满足,无法通过调用object的toString()方法或者valueOf()方法来获取Primitive值,那么JS将抛出TypeError错误。

object自动转换成number的规则:

1.调用object的valueOf()方法,如果得到的是Primitive值,则将该Primitive值转换成number后返回。

2.如果无法从valueOf()方法中获取Primitive值,那么调用object的toString()方法;如果toString()返回的是Primitive值,则将该Primitive值转换成number后返回。

3.如果上述两点均无法满足,那么JS将抛出TypeError错误。

可以看到,object自动转换成string和object自动转换成number的规则其实是一致的,不同之处在于toString()方法和valueOf()方法的调用次序。

根据上述规则,可以很好的理解一些转换结果:


1.对于空数组,当将其转换成number时,得到的结果为0。这是因为首先会调用array的valueOf()方法,由于valueOf()返回的是数组对象本身,因此接下来JS会调用空数组的toString()方法;因为空数组toString()后返回结果为空字符串,因此最终会将空字符串转换成数字0后返回。

2.对于只有一个数字成员的数组来说,应用同样的规则转换成number,最后得到的结果就是该数字。

3.对于有多个数字成员的数组来说,由于无法将字符串转换成number,因此最后得到的结果为NaN。

何时转换成string?何时转换成number?

对object进行自动类型转换时,根据object类型的不同以及操作符的不同,JS会选择将其转换成string还是number。具体规则如下:

1.+操作符两边出现对象的,将对象转换成string。
2.所有对象(Date对象除外),优先转换成number。
3.对于Date对象,优先转换成string。

值得注意的是,对于+操作符,除了操作符两边出现对象或者字符串的情况,其余情况下均执行“转换成number”的操作,同时,这种操作还与值之间的顺序有关。

实验


代码如下:
console.log(3 * []);//0
console.log(3 * [2]);//6
console.log(3 * [1,2]);//NaN

console.log(3 + [2]);//32

var now = new Date();
console.log(now + 1);//Wed Mar 26 2014 10:51:39 GMT+0800 (CST)1
console.log(now - 1);//1395802299223
console.log(now * 2);//2791604598448

console.log(true + true);//2
console.log(2 + null);//2, null is converted to 0
console.log(2 + undefined);//NaN, undefined is converted to NaN
console.log(1 + 2 + " cats");//3 cats
console.log(1 + (2 + " cats"));//12 cats

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

JavaScript中的object转换成number或string规则介绍_javascript技巧

JavaScript中的object转换成number或string规则介绍_javascript技巧:在JavaScript程序编写过程中,根据不同的上下文,JS会自动将object转换成number或者string后再处理。这种自动转换的规则如下: object自动转换成string的规则: 1.如果object所属类覆写了toString()方法,则调用该方法。如果toString()调用
推荐度:
标签: js javascript object
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top