下面两段代码有在性能上有区别吗
主要是 一个在循环体内定义变量,一个在循环体外提前定义变量。下面代码可能过于简单,如果循环次数过于多的情况下,会不会有区别。
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
会不会有什么不一样?
主要是 一个在循环体内定义变量,一个在循环体外提前定义变量。下面代码可能过于简单,如果循环次数过于多的情况下,会不会有区别。
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
会不会有什么不一样?
很多东西引擎会优化的,不用考虑这些小的东西。即使有差,也很小很小。之前常说的就是用i++还是++i。
根据你的需求来就好,如果你在for循环之后还需求使用变量temp
,那么就在外面定义。
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
如果你关心的是性能的话,用
let
的整体性能倒是比用var
略低一些,但用同样的关键字放在循环体内还是外的区别可忽略不计。var
有作用域提升,这个属于基础知识了;let
虽然性能上略差一些,但却带来了块级作用域和不可重复声明的特性,对于开发而言有了巨大的帮助。StackOverflow 上有相关讨论:
https://stackoverflow.com/que...
https://stackoverflow.com/que...