javascript - 使用 for 循环声明 JS 变量
问题描述
let
当我使用相同的变量名多次通过关键字声明变量时,我知道它显示错误Uncaught SyntaxError: Identifier 'variable name' has already been declared
。
例如 (1)*:
let v = "1";
let v = "1";
但是当我在一个循环中声明许多具有相同名称的变量时,我不知道为什么它没有显示相同的错误。
例如 (2)*:
for(let i = 0; i<=2; i++){
let v = "1"
}
我已经知道有一个合乎逻辑的解释,但我不知道是什么
注意:假设在 JS 文件中声明 example(1) 中的前两个变量,并在另一个 JS 文件中创建 example(2) 中的循环
这个问题之前已经回答过,但被错误地删除了,所以我将它与答案一起重新发布。
解决方案
循环的每次迭代都是一个新的范围。
就像你用 v
名字声明变量而不考虑它的值并在范围内global scope
声明一个 名字一样,程序不会显示任何错误,因为两个变量不在同一个范围内v
if statement
例如 :
//glopal scope
let v = "1"
console.log(v) // output : 1
//if statement scope
if(true === true){
let v= "2"
console.log(v) // output : 2
}
//also in global scope after if statement scope
console.log(v) // output : 1
所以循环也会发生同样的情况,因为循环的每次迭代都是一个新的范围。
推荐阅读
- python - 如何使用 google drive api 获取 google drive 中所有文件的名称?
- google-app-engine - Java 邮件 API 适用于本地主机但不适用于谷歌应用引擎
- c++ - 为什么构造函数只调用一次?
- android - HTML5 视频播放器在 ionic5 android 中不起作用
- kubernetes - Kubernetes 端口转发是如何工作的?查看 GUI 是一种安全且响应迅速的方法吗?
- httpd.conf - httpd.conf 中错误页面的 Apache 重写规则
- python - Python - SMTP 监控
- python - 用于安装 python 和运行脚本的批处理文件
- nginx - 使用 Tarantool http 作为 Nginx 上游服务器 - 出现错误 13: Permission denied
- botframework - 用于 azure DirectLine 应用服务扩展的 Node.js 客户端