循环内定义变量和循环外定义变量有性能区别吗

下面两段代码有在性能上有区别吗

主要是 一个在循环体内定义变量,一个在循环体外提前定义变量。下面代码可能过于简单,如果循环次数过于多的情况下,会不会有区别。
for(let i=0; i<10; i++) {
    let tmp = i+1;
    // xxx
}
let tmp;
for(let i=0; i<10; i++) {
    tmp = i+1;
    // xxx
}

在这里定义变量都用的是 let 如果换成 var 会不会有什么不一样?

阅读 4.7k
3 个回答

如果你关心的是性能的话,用 let 的整体性能倒是比用 var 略低一些,但用同样的关键字放在循环体内还是外的区别可忽略不计。

var 有作用域提升,这个属于基础知识了;let 虽然性能上略差一些,但却带来了块级作用域和不可重复声明的特性,对于开发而言有了巨大的帮助。

StackOverflow 上有相关讨论:
https://stackoverflow.com/que...
https://stackoverflow.com/que...

很多东西引擎会优化的,不用考虑这些小的东西。即使有差,也很小很小。之前常说的就是用i++还是++i。
根据你的需求来就好,如果你在for循环之后还需求使用变量temp,那么就在外面定义。

新手上路,请多包涵

肯定有区别的。循环里面你定义变量相当于每次都新建一个temp变量。而在循环外面定义则是修改同一个temp变量的值

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏