bar函数内部的变量为什么可以遮蔽for循环变量的i?
题目描述
函数内部命名冲突导致另外一个变量被意外遮盖,导致了无限循环
题目来源及自己的思路
你不知道的js
相关代码
function () {
function bar() {
i = 3; //i为啥修改了for循环的i
console.log( a + i );
}
for(var i = 0; i < 10; i++) {
bar( i * 2 ); //无限循环了
}
}
你期待的结果是什么?实际看到的错误信息又是什么?
bar
函数内部的变量为什么可以遮蔽 for 循环变量的 i
?
回复
1个回答
test
2024-07-03
因为for循环和bar函数在同一个作用域下,而使用var声明的变量会提升到整个作用域的顶部,换用let就是另一种情形
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容