作用域就是变量与函数的可访问范围,即作用域控制着变量和函数的可见性和生命周期。
全局作用域:全局作用域内的对象在代码中任何地方都可访问,其生命周期伴随着页面的生命周期
函数作用域:函数内定义的变量或函数的作用范围。在这个作用域内的变量和函数只能在函数内部访问,随着函数执行结束后会被销毁。
块语句:(es6){}内的一段代码。它可以使你在仅期望一条语句的地方使用多条语句。结合使用块作用域声明let、const、class创建的变量拥有块级作用域,他们只能在{}内被访问,在代码块直接结束后会被销毁。块可以防止临时变量污染全局命名空间。
执行一条表达式或函数定义的语句时,可以将此过程分解为【声明】【初始化】【赋值】三个步骤,let和const的创建/声明有提升,但初始化和赋值没有被提升。
暂时性死区:从块顶部到变量初始化之前这个变量都是不可用的,这段区域叫做暂时性死区 let、const也存在变量提升,但因暂时性死区,会导致使用报错ReferenceError,可以说存在变量提升,但这种提升无效