for循环括号内的变量和内部定义变量有关变量名相同问题

本文解释了JavaScript中`let`和`var`在作用域上的区别,强调了`let`的块级作用域与`var`的函数作用域,以及在函数体内和全局作用域的命名规则。let不能与函数名冲突,var则存储在window对象中,但不允许与同名的函数名冲突,遵循就近原则。
摘要由CSDN通过智能技术生成

for循环括号内定义的变量执行的时候如果括号内是var就是全局作用域,会放在window对象内。如果是let变量是一个块作用域。不是脚本作用域。是特定的块作用域。脚本作用域是全局作用域。let这个块作用域是内部代码块的父级作用域。内部也可以写let和var。函数作用域是整个函数都可以访问,块作用域只是那个循环体内可以访问。var定义的是函数作用域,每次循环都可以改变的。let是块作用域相当于是一块独立的。只对那一次循环有用。其他是再次定义,当调用那一次的函数/其他就会是有那次的内存。都是内部的父级作用域。且赋值操作只是函数内部不会执行。当作值赋。但是左边会执行找到是哪一个变量。具体见

let 和 const 命令 - ECMAScript 6入门 (ruanyifeng.com)

函数括号内的作用域是函数作用域无论{}内还是括号里的定义都是在函数作用域上,与for不同是在不同的块级作用域上。

let和var在函数体内变量名不能同,或者在全局/脚本作用域不能同。找不到是哪一个定义好了的。函数名和let定义的名字不能相同的,不知道是函数还是变量,不会根据()来看的。函数名存放于栈内栈内单独开辟一块,函数体存放于堆内。let定义的变量,相当于自调同写了一个变量名。报错。而var是存在于window对象上。不会报错。但是调用的时候,找的时候不允许自调函数的变量名和函数名相同。var和函数名没规定,但是栈上的函数名和全局变量都是权重差不多。看调用那一个就看就近原则。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值