Tom*_*ica 26 javascript ecmascript-6 for-of-loop
When using a for of loop, both of these are allowed and work:
const numbers = [1,2,3];
// works
for(let number of numbers) {
console.log(number);
}
// also works
for(const number of numbers) {
console.log(number);
}
Run Code Online (Sandbox Code Playgroud)
I always use const since I annot fanthom changing the number variable in any context, but when I see a for...of loop in other people's code, it often uses let. Maybe there's a drawback to const that I didn't see? Browser bugs?
为什么在循环中使用const以及何时使用?letfor...of
T.J*_*der 27
为什么在循环中使用
const以及何时使用?letfor...of
如果循环体内的标识符没有赋值,则基本上是使用let或的样式问题const。
使用const,如果你想在循环体中的标识符为只读(这样,例如,如果有人修改了代码后添加一个任务,这是一个积极的误差)。使用let,如果你希望能够分配给它(因为你在你的代码有一个任务,或者你希望有人能够在以后添加一个没有改变的声明)。
你可以用for-of和for-in循环来做到这一点。一个for循环的控制变量通常不是恒定的(因为在正常情况下,你的“更新”子句中更新for;如果你不这样做,for可能是错误的循环中使用),所以您通常使用let它。
为清楚起见,这是一个在循环体中进行赋值的示例:
for (let str of ["a", " b", " c "]) {
str = str.trim();
// ^^^^^----- assignment to the identifier
console.log(`[${str}]`);
}Run Code Online (Sandbox Code Playgroud)
如果你在上面使用constfor str,你会得到一个错误:
for (const str of ["a", " b", " c "]) {
str = str.trim();
// ^^^^^----- Error
console.log(`[${str}]`);
}Run Code Online (Sandbox Code Playgroud)
Awo*_*ing 10
有一个简单的理由的患病率for(let i,而不是for(const i即使是有经验的开发者/教程厂商谁没有在循环体内修改的价值和了解常量/让之一。
许多人将 const 视为永远不会改变的“常量”。曾经。(当然它永远不会改变)。但他们进一步感到尴尬“重新定义多个具有相同名称的常量”。例如, const server = 'fun.example.com'在一个地方拥有,const server = 'boring.example.com'在另一个地方拥有将是“令人反感的”。
循环中的变量(至少在 JavaScript 所基于的大多数类 C 语法语言中)是变化最大的变量。在所有 for 循环中,没有什么比 'i' 更能改变它的值了。“i”通常最终成为 CPU 本身(不在 RAM 中)上的“寄存器变量”,以便它可以“更快地改变”。这在 JavaScript 中甚至是正确的,因为它是从 'var' 开始的,当你执行一个简单的for(let i=0;i<50;i++). 即for(const i=0;i<50;i++)抛出错误。
因此,当您遍历列表时,您可以开始看到每秒可能更改(或重新定义)数千次的“i”与for(const i. 所以for(const i...“看起来”或“感觉”i只会有它被分配的第一个值。这似乎是“错误的”,const i..在下一行代码中,i每次“通过循环”可能是完全不同的值。即使您“知道”您正在“为循环中的每次运行重新定义它”,对于某些开发人员来说,这本身也是有问题的。
出于这个原因,许多开发人员更喜欢const在 JavaScript 中保留“定义一次并在整个“程序的整个执行过程”或至少“类中的所有内容”中代表单个值的值。
因此,您的“标题”(我应该使用)中问题的答案可能是“继续使用 const,因为您有理由并且这对您有意义”。您对“为什么是 for(让我如此普遍”)的疑问的答案也是我在这里回答的。对于某些人来说,他们只是习惯了,for(let因为它适用于“for 循环”和“遍历列表” . 对于其他人来说,这是一个有意识的选择,因为他们不喜欢一遍又一遍地“重新定义常量”。
我谦虚地建议,如果您确实使用,const请不要使用i“项目”,因为 i 与递增的整数变量如此相关。至少,如果你使用像 item 这样的好名字,将它视为只存在一次的单一事物会感觉更舒服。我谦虚地建议,如果您使用“让”也不要let i of出于同样的原因使用。使用i只为实际增加的项目。即使用 for(let item of items) 或 for(let i=0;i<y;i++)
| 归档时间: |
|
| 查看次数: |
10459 次 |
| 最近记录: |