JS浮点数丢失精度问题

1
0.3 - 0.2 !== 0.1  // true

JS最大数字长度

1
Number x = 9007199254740992 // 即2的53次方,js数字长度最大不能超过这个数值

parseInt 太小的数字会产生 bug

1
2
parseInt(0.00000000233) // 2
parseInt(0.00000000456) // 4

NaN更像是一个范围,在JS中比较特殊,它并不会等于自身

1
2
const x = NaN;
x !== x // true

isNaN也存在bug,ES6中对其进行了修复

1
2
isNaN('abc');       // true
Number.isNaN('abc') // false

null的设计问题

1
2
3
4
5
6
7
8
9
10
1 + null          // 1
1 + undefined // NaN

Number(null) // 0
Number(undefined) // NaN

typeof null === 'object' // true
null instanceof Object // false

// null等于object类型,但却不是继承于object

到底鸡生蛋还是蛋生鸡

1
2
3
// 反正挺生草
Object instanceof Function // true
Function instanceof Object // true