js == 与 === 性能问题
 发布于 8 年前  作者 wangchaoduo  3319 次预览  最后一次回复是 8 年前  来自 问答 

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

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 回复
hyj1991

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


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);

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

i5ting

使用benchmark.js来做吧

lic121436

同意一楼的看法

wangchaoduo

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

wangchaoduo

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