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

发布于 2022-09-11 23:16:47 字数 394 浏览 15 评论 0

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

主要是 一个在循环体内定义变量,一个在循环体外提前定义变量。下面代码可能过于简单,如果循环次数过于多的情况下,会不会有区别。
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

橘味果▽酱 2022-09-18 23:16:47

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

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

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

九命猫 2022-09-18 23:16:47

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

束缚m 2022-09-18 23:16:47

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文