循环内定义变量和循环外定义变量有性能区别吗
下面两段代码有在性能上有区别吗
主要是 一个在循环体内定义变量,一个在循环体外提前定义变量。下面代码可能过于简单,如果循环次数过于多的情况下,会不会有区别。
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
会不会有什么不一样?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果你关心的是性能的话,用
let
的整体性能倒是比用var
略低一些,但用同样的关键字放在循环体内还是外的区别可忽略不计。var
有作用域提升,这个属于基础知识了;let
虽然性能上略差一些,但却带来了块级作用域和不可重复声明的特性,对于开发而言有了巨大的帮助。StackOverflow 上有相关讨论:
https://stackoverflow.com/que...
https://stackoverflow.com/que...
很多东西引擎会优化的,不用考虑这些小的东西。即使有差,也很小很小。之前常说的就是用i++还是++i。
根据你的需求来就好,如果你在for循环之后还需求使用变量
temp
,那么就在外面定义。肯定有区别的。循环里面你定义变量相当于每次都新建一个temp变量。而在循环外面定义则是修改同一个temp变量的值