JS 语言的一些骚操作

165 阅读1分钟

1、由于 js 下的 undefined 存在被重写的风险,虽然ES5中,window的 undefined 属性已经被设置为只读,但是在局部作用域中,还是存在被篡改的可能

void 0 === undefined // true

2、js中的bug,

typeof null == 'object'

3、js无法处理超大的整数, 9007199254740992 === 9007199254740993结果为 true;如下为浏览器打印结果:

let a = 99999999999999999999;
a; // 100000000000000000000

可以通过BigInt来实现,最简单的方式是在后面直接添加一个 n,如: 9007199254740992n。也可以通过:

let a = BigInt('9007199254740992'),
// 但是不可以
let a = BigInt(9007199254740995); // 直接传入一个大整数,这时数据已经发生了变化