为什么最后两个行为不同(在 Google Chrome 的控制台上测试)?
               /* number */                       /* string */
         0               == false;         ''               == false;
         !!0             == false;         !!''             == false;
         Number(0)       == false;         String('')       == false;
         !!Number(0)     == false;         !!String('')     == false;
         new Number(0)   == false;         new String('')   == false;
         (new Number(0)) == false;         (new String('')) == false;
         !!new Number(0) == true;          !!new String('') == true;
换句话说,如果使用 new 关键字调用Number或调用,为什么转换为布尔值不同(而例如,并且工作相同)?StringArray()new Array()
另外,奖金问题。为什么是'' == 0?我希望该比较隐式转换0为'0',因为这将是一个扩大转换,而在比较之前将两者都转换为布尔值是一个缩小转换。