理论
一、[]==false为true
[ ]不是原始值类型故需转化
//先调用valueOf方法进行转换
[].valueOf() //[]
//发现valueOf转化完后,依然不时原始值类型,那继续用toString方法转换
[].toString()//""
//使用Number转换
Number('')==Number(false) //0==0 true;
二、[]==![]
!的优先级要大于==的,所以先运算右边。
//!可将变量转换成boolean类型,null、undefined、NaN以及空字符串('')取反都为true,其余都为false。
![]//false
//变成
[] == false//跟上面一样就是true了
三、{}==!{}
{}不是原始值类型故需转化
//先调用valueOf方法进行转换
{}.valueOf()
//发现valueOf转化完后,依然不时原始值类型,那继续用toString方法转换
{}.toString()//[Obejct obejct]
//使用Number转换
Number({}.toString())//NaN:NaN是number类型
NaN与任何值都不相等,包括NaN自身。故为false
四、对象的toString()方法
{}.toString()报语法错误原因:
参考链接
https://blog.csdn.net/magic_xiang/article/details/83686224
https://blog.csdn.net/qiqi_77_/article/details/79456605
https://blog.csdn.net/liuchao1987330/article/details/78789489