现代 JavaScript 特性全解析
1. 变量作用域
变量作用域主要分为函数作用域、模块作用域和全局作用域。函数作用域局限于特定函数内部的代码区域;模块作用域仅适用于特定模块;全局作用域则适用于整个程序,在全局作用域中定义的变量可在代码的任何部分使用。
变量在其自身作用域及其所有子作用域中始终可用。例如,一个函数作用域可以包含多个块作用域。在一个程序中,只要变量处于不同的作用域,相同的变量名可以定义两次。
2. 提升变量(Hoisted Variables)
传统 JavaScript 使用 var 关键字声明变量,这些变量的作用域是当前执行上下文(通常是包含它们的函数)。如果在任何函数外部声明,变量的作用域就是全局的,并且会在全局对象上创建一个属性。
与其他变量不同,运行时环境会在执行时将 var 声明提升到其作用域的顶部。因此,可以在定义这些变量之前在代码中调用它们。以下是一个提升变量的示例:
function scope() {
foo = 1;
var foo;
}
在这个示例中,我们在声明变量之前就给它赋值了。由于 JavaScript 的提升机制,解析器会将所有使用 var 关键字定义的变量声明移动到作用域的顶部,因此上述代码等价于:
function scope() {
var foo;
超级会员免费看
订阅专栏 解锁全文
1131

被折叠的 条评论
为什么被折叠?



