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

2023-12-16 16:50:56

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

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

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

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

文章来源:https://blog.csdn.net/qq_61990666/article/details/135032848
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。