for (let i = 0; i < 3; i++) {
// let i = 'abc';
console.log(i);
}
像上面的循环,会输出0、1、2
let是明确的不允许重复声明的
去掉注释后是下面这样,会输出3个abc
我目前理解不明白,有人能够解释一下吗?
for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
for (let i = 0; i < 3; i++) {
// let i = 'abc';
console.log(i);
}
像上面的循环,会输出0、1、2
let是明确的不允许重复声明的
去掉注释后是下面这样,会输出3个abc
我目前理解不明白,有人能够解释一下吗?
for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
http://es6.ruanyifeng.com/#do...
参考下阮老师的书吧
let 不是 const
你说的 let 不允许重复声明是在 swift 里面的吧
let 作用在块级作用域
当 i = 0时候,你执行了 i = 'abc' 的赋值操作,当然输出的是 'abc',后面的循环同理
以上纯属胡扯,看了书以后,其实是 for 循环中的 i 和 循环体中的 i 是 2个不同的作用域,是互相独立的。
感谢纠正~
// 只是觉得上面答案
// let i;
// 写在外面不太对,因为在for之外是访问不到的。
for (let i = 0; i < 3; i++){
console.log(i);
// for块级作用域,i可见
{
// let创建了一个新作用域
let i = 'abc';
console.log(i);}
}
Output:
0
"abc"
1
"abc"
2
"abc"
8 回答4k 阅读✓ 已解决
6 回答2.1k 阅读✓ 已解决
5 回答5.8k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
3 回答2.1k 阅读
5 回答2.1k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
希望你能看出端倪。。