为什么[]是false而 !![] 是true

2017-01-09 14:08:18来源:segmentfault作者:puhongru人点击

原文链接: 链接描述


总结一下:


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

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台