js == 与 === 性能问题
发布于 7 年前 作者 wangchaoduo 3024 次浏览 来自 问答

从入门就有人教我,===的性能比==好很多 于是做了一个小测试

console.log(new Date())

for (let i = 0; i < 10000000; i++) {
    i === i
}
console.log(new Date())
console.log('==============================')
console.log(new Date())

for (let j = 0; j < 10000000; j++) {
    j == j
}
console.log(new Date())

两者输出时间差几乎是一样的,于是进行改进,加大了循环次数, 输出结果却是==的消耗时间明显小于===的消耗时间, 有没有大佬能指正一下我在哪一步出了问题

5 回复

那是因为你比较的两个东西本来就一样,你试试看下面类型不一样的比较呢?


let t1 = Date.now();
for (let i = 0; i < 10000000; i++) {
  i === '1'
}
console.log(Date.now() - t1);
console.log('==============================')

let t2 = Date.now();
for (let j = 0; j < 10000000; j++) {
  j == '1'
}
console.log(Date.now() - t2);

== 要做类型转换分别进行两边的比较,所以这种情况下会慢很多

使用benchmark.js来做吧

同意一楼的看法

@hyj1991 确实有了很大的差距,多谢指点

@i5ting 谢谢回复,受我以渔,非常受用

回到顶部