原文链接: 链接描述
总结一下:
hint:相当于default,是对象的默认值。
OrdinaryToPrimitive(input,hint)中,若hint是
string
,则先toString
再valueOf
;其他情况,则先valueOf
再toString
所以对于[]
来说,是先valueOf
再toString
,得到的结果是""
,所以[]==false
是true。
而对于!![]
来说,根据规范相当于!!(toBoolean([]))
,而toBoolean([])
为true,所以!![]
是true。
下面看一些例子哦~~
[1] + [2] - [3] === 9; // true ,相当于“12” - 3 ,先toString,然后'-'会调用toNumber
[1] + [2] === "12"; // true
[1] +- [2] === "1-2"; // true,这要使用到Symbol.toPrimitive,这儿我自己还没太搞明白,后续再补上
1 - [2] === -1; // true
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。