JavaScript 函数的作用域

101 阅读2分钟

前言

JavaScript函数的作用域是指在函数中声明的变量在整个函数体内可见和可访问的范围。作用域控制着变量的可见性和生命周期,决定了在何处以及如何访问变量。

一、全局作用域

  1. 全局作用域是在代码中没有嵌套函数情况下定义的变量的作用域
  2. 在全局作用域中声明的变量可以在代码的任何地方被访问
  3. 全局作用域中声明的变量可以被任何函数访问和修改
let globalVarible = 'Global' // 全局作用域变量

function myFunction() {
  console.log(globalVarible) // 在函数中访问全局作用域的变量
}

myFunction() // 'Global'
console.log(globalVarible) // 'Global'

二、局部作用域

  1. 局部作用域是在函数内部声明的变量
  2. 在局部作用域中声明的变量只能在函数中访问
  3. 局部作用域可以嵌套,内部函数可以访问外部函数的变量
function outerFunction() {
  let outerVariable = "Outer"; // 外部函数作用域的变量

  function innerFunction() {
    let innerVariable = "Inner"; // 内部函数作用域的变量
    console.log(outerVariable); // 在内部函数中访问外部函数作用域的变量
  }

  innerFunction(); // 输出:Outer
}

outerFunction();

三、闭包🔥🔥🔥

  1. 闭包是指一个函数能够记住访问其此法作用域,即使在函数定义后被执行或在其词法作用域之外被调用
  2. 闭包可以通过将内部函数返回作为参数传递给其他函数来创建
  3. 闭包可以访问其外部函数的变量,即使外部函数已经执行完毕
function outerFunction() {
  let outerVariable = "Outer";

  function innerFunction() {
    console.log(outerVariable); // 在内部函数中访问外部函数作用域的变量
  }

  return innerFunction; // 返回内部函数作为闭包
}

let closure = outerFunction(); // 创建闭包
closure(); // 输出:Outer

在上述示例中,内部函数 innerFunction 形成了一个闭包,并能够访问外部函数 outerFunction 的变量 outerVariable。

函数的作用域对于代码的封装性、变量的访问控制和避免命名冲突都非常重要。了解函数的作用域可以帮助您更好地理解JavaScript中的变量作用域和作用域链

结语:

本章中内容偏概念,大家如果感到困惑是正常的,一是老夫写的都是最简单示例,二是这里的概念需要用图来描述好一些。不过没关系,大家掌握基本的概念,闭包是面试高频考察点,完整的闭包并不是这样,这个我会在进阶知识中,带大家完全打通闭包,只要面试官敢问,你就可以和他拉扯3分钟以上。因为是基础知识所以就先让大家理解概念,我们慢慢的打怪升级!好了,我们出发去下一章IIFE🚀