我应该在哪里以及如何声明在循环中使用的新变量?
答:
const map = new Map(Object.entries(columns));
let cols;
for (let [key, value] of map)
{
cols = value.split('|');
//...
}
乙:
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,因为每个人都说 let 是新的 var,但是 A 和 B 之间有什么区别吗?
已编辑:
变量 cols 将仅在 for 内部使用。我想知道如果在循环内初始化变量(例如 100 次)是否存在一些问题。所以我想知道是否应该在循环外初始化。 (A 或 B 示例)
目的不是在循环外获取访问权限,而是防止(例如)100 个初始化变量 cols 在循环内(因为 let 在循环内使用 - 情况 B)。
最佳答案
在代码片段 A 中,cols
也可以在 for
之外访问。由于 let
变量是 block 作用域的,当使用 let
在 for
中定义变量时,变量的作用域仅限于该 block 。因此,在 B 中,变量 cols
将无法在 for
之外访问。
C,如果 cols
只定义一次,则类似于 A。如果 col
在同一范围内使用 let
定义两次将导致错误。
使用哪一个取决于用例。
- 如果仅在
for
中需要cols
,则使用let cols = ...
- 如果
for
之外也需要cols
,在for
之前使用let cols;
然后它可以在相同的封闭范围内也在for
之后使用。请注意,在这种情况下,cols
将是循环中分配的最后一个值。
关于javascript - ES6 在循环之前或循环中声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38634097/