js中 [] ? true : false 的返回值为什么是true?

对象到数字的转换过程如下:

如果对象具有valueof()方法,后者返回一个原始值,则JavaScript将这个原始值转换为数字并返回;否则,如果对象具有toString()方法,后者返回一个原始值,JavaScript将这个字符串转换为数字并返回;否则,报错。数组继承了默认的valueOf()方法,但是数组、函数和正则表达式调用此方法后,只返回对象本身,因此转换为数字,还会继续调用toString()方法,空数组调用toString()返回空字符串,转换为数字为0,new Array(1)同样因为虽然长度为1,但值为undefined,转换为数字仍未0.所以,才会出现博主提出的疑问。

参考:https://segmentfault.com/q/1010000011457390

发布了179 篇原创文章 · 获赞 82 · 访问量 55万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章