JavaScript作用域与作用域链

JavaScript作用域与作用域链

💡 原文中文,约4400字,阅读约需11分钟。
📝

内容提要

本文讨论了JavaScript中的作用域和变量声明,强调内层函数对外层变量的访问,以及`let`和`var`的区别。通过示例说明了作用域链和变量提升的概念,以及不同作用域中变量的可见性和生命周期。

🎯

关键要点

  • 内层函数可以访问外层函数的变量,形成作用域链。
  • 使用 var 声明的变量会提升到函数顶部,而 let 声明的变量不会。
  • if 语句块不会创建新的作用域,变量依然在全局作用域中。
  • let 声明的变量在块级作用域内有效,超出该作用域后不可用。
  • 同一作用域内不能重复声明同名变量,使用 let 会导致语法错误。
  • 自由变量在函数中可以通过作用域链访问外层变量。

延伸问答

JavaScript中的作用域链是什么?

作用域链是指内层函数可以访问外层函数的变量,从而形成的变量访问链。

var和let的主要区别是什么?

使用var声明的变量会提升到函数顶部,而let声明的变量在块级作用域内有效,不会提升。

if语句块会创建新的作用域吗?

不会,if语句块不会创建新的作用域,变量依然在全局作用域中。

在同一作用域内可以重复声明同名变量吗?

不可以,使用let声明的变量在同一作用域内不能重复声明同名变量,否则会导致语法错误。

自由变量在函数中如何访问?

自由变量可以通过作用域链访问外层变量。

let声明的变量在什么情况下不可用?

let声明的变量在超出其块级作用域后不可用。

➡️

继续阅读