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

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

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

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

阅读更多
个人分类: JavaScript
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭