在哪里以及如何声明循环中使用的新变量?ES6在循环之前或循环中声明变量
答:
const map = new Map(Object.entries(columns));
let cols;
for (let [key, value] of map)
{
cols = value.split('|');
//...
}
B:
const map = new Map(Object.entries(columns));
for (let [key, value] of map)
{
let cols = value.split('|');
//...
}
C:
const map = new Map(Object.entries(columns));
var cols;
for (let [key, value] of map)
{
cols = value.split('|');
//...
}
大概是A或B,因为大家都说咱们是新的变种,但有什么区别A和B?
编辑:
变量cols将仅用于内部for。我想知道是否有一些问题,如果变量在循环内初始化(例如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).
您应该始终使用尽可能最窄的范围,例如B. – ftor
“*大家都说let是新的var *” - 用一支没有任何资格的棍棒击败每个人。 – Bergi
“*防止循环内的100个初始化变量cols *” - 这是编译器的工作。你不需要也不应该这样做。 – Bergi