Javascript 历史遗留问题产生了许多混乱的语法
简单整理如下
[] == [] // false
[] < [] // false
[] > [] // false
[] <= [] // true
[] >= [] // true
Math.min() // Infinity
Math.max() // -Infinity
Infinity > -Infinity // true
Math.min() > Math.max() // true
typeof NaN // 'number'
typeof null // 'object'
Number({}) // NaN
Number([]) // 0
Number('') // 0
Number(true) // 1
Number(false) // 0
Number(null) // 0
Number(undefined) // NaN
Boolean([]) // true
Boolean({}) // true
[1,2,3,11,22].sort() // (5) [1, 11, 2, 22, 3]
9999999999999999 // 10000000000000000
0.1+0.2 // 0.30000000000000004
0.1+0.7 // 0.7999999999999999
[] + [] // ''
{} + {} // NaN
{} + [] // 0
[] + {} // '[object Object]'
true + true // 2
true == 1 // true
true === 1 // false
true - [] // 1
true + [] // 'true'
0/0 // NaN
null == undefined // true
null == 0 // false
null == '' // false
null == [] // false
null == false // false
0 == '' // true
0 == [] // true
0 == false // true
false == [] // true
false == '' // true
[] == '' // true
0 == '' == [] // false
false == '' == 0 // false
false == '' == [] // false
这篇文章列举了JavaScript中一些令人困惑的语法现象,包括不一致的比较运算符行为,Math.min()和Math.max()的特殊情况,以及Number对象在不同输入下的奇怪转换。还探讨了NaN的类型,null与undefined的比较,以及空数组和布尔值在特定上下文中的表现。
7万+

被折叠的 条评论
为什么被折叠?



