admin管理员组文章数量:1418134
Where and how should I declare new variables used in loops?
A:
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('|');
//...
}
Probably A or B since everyone says let is the new var, but is there any difference between A and B?
Edited:
The variable cols will be used only inside for. I was wondering if there are some issues if variable is initialized inside loop (for example 100 times). So I wondered if it should be initialized outside loop. (A or B example)
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).
Where and how should I declare new variables used in loops?
A:
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('|');
//...
}
Probably A or B since everyone says let is the new var, but is there any difference between A and B?
Edited:
The variable cols will be used only inside for. I was wondering if there are some issues if variable is initialized inside loop (for example 100 times). So I wondered if it should be initialized outside loop. (A or B example)
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).
- You should always use the narrowest possible scope this is, example B. – user6445533 Commented Jul 28, 2016 at 11:21
- "everyone says let is the new var" - beat everyone with a stick who says that without qualification. – Bergi Commented Jul 28, 2016 at 16:49
- "prevent 100 initialization variable cols inside loop" - that is the piler's job. You don't need and should not do it. – Bergi Commented Jul 28, 2016 at 16:51
2 Answers
Reset to default 4In code snippet A, cols
is accessible outside of the for
too. As let
variables are block-scoped, when used let
to define variable inside for
, the scope of the variable is for that block only. So, in B, the variable cols
will not be accessible outside of the for
.
C, is similar to A if cols
is defined only once. If col
is defined twice in the same scope using let
will result in error.
Which one to use depends on the use-case.
- If
cols
is needed insidefor
only, then uselet cols = ...
- If
cols
is needed outside offor
too, uselet cols;
beforefor
and then it can be used afterfor
too in the same enclosing scope. Note that, in this case,cols
will be the last value assigned in the loop.
The difference between A and B is the scope of the var. In first case you can access cols
also outside the loop, in the second you can't.
let a;
for (let i =0; i < 2; i++) {
let b = i;
a = i;
}
console.log('a outside the loop:', a);
console.log('b outside the loop:', b);
console.log('i outside the loop:', i); //If `var` was used instead of `let` then `i` would have had global scope
本文标签: javascriptES6 declaring variables before or in loopStack Overflow
版权声明:本文标题:javascript - ES6 declaring variables before or in loop - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745279376a2651350.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论