Mak*_*kla 7 javascript ecmascript-6
我应该在哪里以及如何声明循环中使用的新变量?
A:
const map = new Map(Object.entries(columns));
let cols;
for (let [key, value] of map)
{
cols = value.split('|');
//...
}
Run Code Online (Sandbox Code Playgroud)
B:
const map = new Map(Object.entries(columns));
for (let [key, value] of map)
{
let cols = value.split('|');
//...
}
Run Code Online (Sandbox Code Playgroud)
C:
const map = new Map(Object.entries(columns));
var cols;
for (let [key, value] of map)
{
cols = value.split('|');
//...
}
Run Code Online (Sandbox Code Playgroud)
可能是A或B,因为每个人都说let是新的var,但A和B之间有什么区别吗?
编辑:
变量cols将仅用于内部.如果变量在循环内被初始化(例如100次),我想知道是否存在一些问题.所以我想知道它是否应该在循环外初始化.(A或B示例)
The purpose is not to get access outside loop, but prevent (for example) 100 initialization variable cols inside loop (because let is used inside loop - case B).
在代码片段A中,也cols可以在外部访问for。由于let变量是块作用域的,因此当用于let在 inside 定义变量时for,变量的作用域仅适用于该块。因此,在 B 中,该变量cols将无法在for.
cols如果仅定义一次,则 C 与 A 类似。如果col在同一范围内定义两次,使用let将导致错误。
使用哪一种取决于用例。
cols在内部需要for,则使用let cols = ...cols之外需要for,请let cols;在before使用,然后在同一封闭范围内for可以在too之后使用。for请注意,在这种情况下,cols它将是循环中分配的最后一个值。| 归档时间: |
|
| 查看次数: |
1572 次 |
| 最近记录: |