Js/es for(let i in Obj)效率分析及优化

先上个例子

let obj={o:"o",o1:"o1"};
for(let i in obj){
setTimeout(function(){
    console.log(i);
});
}

输出结果:
这里写图片描述
惊不惊喜意不意外?
哇嘎嘎,原来在循环中使用let声明循环变量i,每次循环都会声明一块新的内存去保存此次的循环变量值,虽然是同一个名称i。

优化使用var声明

let obj={o:"o",o1:"o1"};
for(var i in obj){
setTimeout(function(){
    console.log(i);
});
}

输出结果:
这里写图片描述

使用var声明的循环变量只会保留一块内存,每次只是给这块内存赋值而已。i指向的是同一个指针。

原文地址:https://www.cnblogs.com/dbdb/p/7695048.html