arr+'' 隐式转换

来源:7-4 flat函数设计

深山小童

2019-05-11

老师,对象转换成字符串,不是先调用toString()方法吗,为什么是题中先调用的是valueOf()方法呢。难道说 arr + ‘’ 是将arr隐式转换成数字?谢谢

写回答

2回答

weixin_慕UI1016465

2019-07-29

arr + "" 

加号一侧 是 string 类型 ,那么另一侧也得转换为 string 类型

数组得先转换为原始类型

- 先调用 ToPrimitive(input,hint) (Date 对象特殊,hint 为 string),hint 默认为 number

- 所以先调用 valueOf 方法,如果返回的是基础类型,返回之

- 否则调用 toString,如果返回的是基础类型,返回之

- 抛出 TypeError 错误


参见标准

https://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive



1
0

快乐动起来呀

2019-05-13

关于toString和valueof哪个先被调用,课程已经讲的很清楚了,根据不同的情况选择调用,其实不用理解为什么,引擎就是这么定义的

0
1
深山小童
嗯,谢谢
2019-05-13
共1条回复

前端跳槽面试必备技巧 面试官全流程指导

一门让你能成功获取前端 Offer 的课程, 不只是技术,面试“技巧”也至关重要

4836 学习 · 830 问题

查看课程