没有严格比较,哪些值被评估为真和假?

时间:2012-02-23 16:38:33

标签: javascript evaluate

我希望得到一个列表,其中包含将评估为truefalse的所有值,其中包含!===甚至{{1}等不正确的等式}

我有一个列表是我多年来收集的,但是它与我的PC一起消失了

1 个答案:

答案 0 :(得分:7)

http://bonsaiden.github.com/JavaScript-Garden/#types.equality

“最好学习强制规则,而不是试图记住上帝的结果,知道有多少不同的比较”......

......但这是一个清单;)

==

""           ==   "0"           // false
0            ==   ""            // true
0            ==   "0"           // true
false        ==   "false"       // false
false        ==   "0"           // true
false        ==   undefined     // false
false        ==   null          // false
null         ==   undefined     // true
" \t\r\n"    ==   0             // true

===

""           ===   "0"           // false
0            ===   ""            // false
0            ===   "0"           // false
false        ===   "false"       // false
false        ===   "0"           // false
false        ===   undefined     // false
false        ===   null          // false
null         ===   undefined     // false
" \t\r\n"    ===   0             // false

物件

{}                 === {};       // false
new String('foo')  === 'foo';    // false
new Number(10)     === 10;       // false

var foo = {};
foo                === foo;      // true

NaN                ==   NaN      // false
NaN                ===  NaN      // false
NaN                ==   false    // false

//NaN does not coerce using non-strict equality.

2014年1月29日更新:

为完整性添加了NaN