JavaScript精髓-03-作用域和作用域链

admin 2023年6月5日15:15:08评论15 views字数 1464阅读4分52秒阅读模式

注意本文主要会以视频的形式呈现,由于目前微信不支持直接发送付费视频,故这里以图文的形式出现,视频见最后,这里需要注意的是,已经购买知识星球的童鞋没有必要购买此付费合集,后面也会在知识星球呈现,由于后面知识星球的价格会上涨,故这里的价格是低于后面的知识星球的价格的,不想要其他内容的童鞋可以直接购买此付费合集

注意:本文视频中知识点相对比较详细一些

首先,我们来谈谈作用域。在JavaScript中,作用域是一个非常重要的概念,它定义了变量、函数和对象的可访问性。换句话说,作用域决定了代码块中的变量、函数和对象在何处以及如何被访问。

JavaScript有以下类型的作用域:

全局作用域:在代码的任何地方都可以访问全局作用域中的变量、函数和对象。当你在所有函数外部声明一个变量时,该变量就有了全局作用域。例如:

var globalVar = "I am a global variable";

function test({
  console.log(globalVar); // Outputs: "I am a global variable"
}

函数作用域:函数作用域通常存在于函数内部,你只能在该函数内部访问这些变量、函数和对象。每个函数都有自己的作用域。

例如:

function test({
  var localVar = "I am a local variable";
  console.log(localVar); // Outputs: "I am a local variable"
}

console.log(localVar); // Uncaught ReferenceError: localVar is not defined

接下来,我们来谈谈作用域链。当在一个作用域中查找某个变量的值时,JavaScript会首先在当前作用域中查找。如果在当前作用域中找不到,它会去父级作用域中查找,依此类推,直到找到该变量或达到全局作用域。这个查找过程就形成了一条链,我们称之为作用域链。

例如:

var globalVar = "I am a global variable";

function outerFunction() {
  var outerVar = "I am an outer function variable";
  
  function innerFunction() {
    var innerVar = "I am an inner function variable";
    console.log(innerVar); // Outputs: "I am an inner function variable"
    console.log(outerVar); // Outputs: "I am an outer function variable"
    console.log(globalVar); // Outputs: "I am a global variable"
  }
  
  innerFunction();
}

outerFunction();

在这个例子中,innerFunction有访问自己作用域、outerFunction作用域和全局作用域的权限。这就形成了一个作用域链:innerFunction -> outerFunction -> global

重要注意点,先看下面这个例子:

原文始发于微信公众号(迪哥讲事):JavaScript精髓-03-作用域和作用域链

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月5日15:15:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JavaScript精髓-03-作用域和作用域链http://cn-sec.com/archives/1783599.html

发表评论

匿名网友 填写信息