请教var和let问题
let前面说不能定义相同的产量,for循环不是重复定义了嘛?难道是说不同的块级作用域可以定义相同变量?for循环可以打印1-10,意思说let声明的变量i因为被匿名函数引用了,所以一直存在?
正在回答
同学你好,他们两个是在同一个作用域里面,没有比大小这个概念哦。
如果帮助到了你,欢迎采纳,祝学习愉快~
同学你好, 可以参考如下对比解释理解
在for循环中直接使用var声明i,然后在每次循环的时候用 let j 保留的 i 的值,所以在 i 变化的时候,j 并不会变化。而console.log 的是 j,得到每次点击可以获取对应的索引值的效果
点击三个按钮的打印结果
所以直接使用let声明i的效果,等同于在每次执行循环的时候,系统默认在循环内部添加了一句let i = i的代码,这样就可以在每次循环的块级作用域中保存i的值了
老师第一次回答可能有些不严谨,给同学造成了困扰, 希望同学能够谅解, 以后老师也会更加严格的要求自己,为同学更好的解答问题
同学结合代码测试一下, 根据代码实现的效果帮助自己更好的去理解哦
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
同学你好,
是的, 不同块级作用可以定义同名变量 。 示例:
(1)如下这种写法,同时在同一作用域下使用let声明同名变量会出现报错
(2)在不同的块级作用域下可以使用let声明同名变量,
理解了前面举的小示例后,我们在来分析为什么for循环中可以直接使用let实现效果
当我们在使用for 循环的时候,每一次循环都会重新声明一个变量。像for(let i = 0; i < 10; i++); 这样使用时,i 变量声明了10次,只不过每一次循环i 变量只在循环体中使用。
简单理解为: 第一次循环的时候, 生成了一个块级作用域,用来保存i的值为0 的, 执行完之后i++变成了1, 这一次循环就结束了。
然后进行第二次循环,这时重新生成了一个块级作用域, 并重新声明了一个变量i值为1, 依次类推, 直到整个循环结束。
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星