视频字幕
欢迎学习作用域和闭包!作用域定义了变量、函数和对象的可访问性,决定了代码的哪些部分可以访问特定的变量。闭包是函数及其创建时词法环境的组合,是一个非常重要的编程概念。
作用域有三种主要类型。全局作用域在整个程序中都可访问。函数作用域只在函数内部可访问。块级作用域只在代码块内可访问,比如用let和const声明的变量。当查找变量时,会形成作用域链,从当前作用域开始,逐级向外查找直到找到变量或到达全局作用域。
闭包是函数和其词法环境的组合。当内部函数引用外部函数的变量时,就形成了闭包。闭包的关键特性是能够记住并访问外部函数的变量,即使外部函数已经执行完毕,这些变量也不会被垃圾回收,内部函数仍然可以访问它们。
让我们看一个JavaScript闭包的具体示例。外部函数outer接收参数x,返回一个内部函数inner。内部函数可以访问外部函数的参数x,即使outer函数执行完毕。当我们调用outer传入5,返回的函数仍然记住x等于5,这就形成了闭包,保持了变量的状态。
总结一下我们学到的要点。作用域控制变量的可访问性范围,包括全局、函数和块级三种类型。闭包是函数与其词法环境的组合,能够记住并访问外部函数的变量。这些概念在模块化编程和数据封装中有广泛应用,是现代编程语言的重要特性。