面试题讲解(八)-- 小细节(1)

var:
1、允许重复的变量声明:导致数据被覆盖
2、变量提升:怪异的数据访问、闭包问题
3、全局变量挂载到全局对象:全局对象成员污染问题
let
1、let声明的变量不会挂载到全局对象
2、let声明的变量,不允许当前作用域范围内重复声明;在块级作用域中用let定义的变量,在作用域外不能访问
3、使用let不会有变量提升,因此,不能在定义let变量之前使用它
4、在循环中,用let声明的循环变量,会特殊处理,每次进入循环体,都会开启一个新的作用域,并且将循环变量绑定到该作用域(每次循环,使用的是一个全新的循环变量);在循环中使用let声明的循环变量,在循环结束后会销毁
const
1、常量不可变,是指声明的常量的内存空间不可变,并不保证内存空间中的地址指向的其他空间不可变。
2、在for循环中,循环变量不可以使用常量
3、没有变量提升;有块级作用域;不能重复声明;声明时必须要初始化;不能重新赋值

细节:
1、变量提升 就是把所有的变量声明提升到当前作用域的最前面,不提升赋值操作
2、函数提升 就是把所有的函数声明(注意是函数声明,不是函数表达式)提升到当前作用域的最前面, 不调用函数
3、

=:定义变量   

猜你喜欢

转载自blog.csdn.net/weixin_45044349/article/details/120880193