• 作用域的概念及作用?作用域的分类?.js 属于哪种作用域?


    🙂博主:锅盖哒
    🙂文章核心:作用域的概念及作用?作用域的分类?.js 属于哪种作用域?

    目录

    前言

    作用域的概念及作用

    作用域的分类

    1. 全局作用域

    2. 局部作用域

    JavaScript的作用域

    作用域链

    闭包

    总结


    前言

    作用域是编程语言中的一个基本概念,它定义了变量和函数的可访问性。了解作用域对于编写可靠和高效的代码至关重要。在JavaScript中,作用域的理解尤为重要,因为它与词法作用域、闭包等概念紧密相关,直接影响到变量的查找和访问。

    作用域的概念及作用

    作用域是一个变量或函数在代码中存在的区域或范围。它决定了代码块中的变量和函数的可见性和生命周期。作用域的主要作用是隔离变量,不同作用域下的同名变量不会互相影响,从而避免了变量命名冲突,提高了程序的可维护性。

    作用域的分类

    作用域主要分为两类:全局作用域和局部作用域。

    1. 全局作用域

    在代码的最外层定义的变量拥有全局作用域,全局变量在整个脚本中都是可访问的。

    1. var globalVar = "I am a global variable";
    2. function exampleFunction() {
    3. console.log(globalVar); // 输出: I am a global variable
    4. }
    5. exampleFunction();

    2. 局部作用域

    在函数内部定义的变量拥有局部作用域,局部变量只能在其定义的函数内部访问。

    1. function exampleFunction() {
    2. var localVar = "I am a local variable";
    3. console.log(localVar); // 输出: I am a local variable
    4. }
    5. exampleFunction();
    6. console.log(localVar); // 错误: localVar is not defined

    JavaScript的作用域

    JavaScript采用的是词法作用域(又称静态作用域),函数的作用域在函数定义的时候就决定了,而不是在函数调用的时候。

    1. var value = "global";
    2. function exampleFunction() {
    3. console.log(value);
    4. }
    5. function callFunction() {
    6. var value = "local";
    7. exampleFunction(); // 输出: global
    8. }
    9. callFunction();

    exampleFunction在全局作用域中定义,它访问的value变量也是全局作用域中的变量,即使在callFunction函数中调用exampleFunction,它访问的value仍然是全局作用域中的变量。

    作用域链

    当一个变量被访问时,JavaScript会首先在当前作用域中查找该变量。如果没有找到,它会继续在上一层作用域中查找,直到找到该变量或者达到全局作用域。这样由多个作用域层次结构组成的链就叫做作用域链。

    1. var globalVar = "global";
    2. function outerFunction() {
    3. var outerVar = "outer";
    4. function innerFunction() {
    5. var innerVar = "inner";
    6. console.log(globalVar); // 输出: global
    7. console.log(outerVar); // 输出: outer
    8. console.log(innerVar); // 输出: inner
    9. }
    10. innerFunction();
    11. }
    12. outerFunction();

    innerFunction中,它可以访问到自己作用域内的innerVar,也可以通过作用域链访问到outerFunctionouterVar和全局作用域中的globalVar

    闭包

    闭包是JavaScript中一个非常重要的概念,它是基于作用域链的一个特性。闭包使得一个函数可以访问其定义时所在作用域中的变量,即使这个函数在其定义的作用域外执行。

    1. function createFunction() {
    2. var localVar = "I am a local variable";
    3. function innerFunction() {
    4. console.log(localVar);
    5. }
    6. return innerFunction;
    7. }
    8. var myFunction = createFunction();
    9. myFunction(); // 输出: I am a local variable

    在这个例子中,innerFunctioncreateFunction外部被调用,但它仍然能够访问到createFunction作用域内的localVar变量,这就是闭包的作用。

    总结

    作用域是JavaScript中一个核心的概念,它决定了变量和函数的可访问性。理解作用域和作用域链对于编写高效和可维护的代码至关重要。JavaScript采用词法作用域,函数的作用域在定义时就已经确定。闭包是基于作用域链的一个特性,它使得函数能够访问其定义时作用域中的变量,即使这个函数在其定义的作用域外执行。通过深入理解这些概念,开发者可以更好地掌握JavaScript编程,写出更加健壮和高效的代码。

  • 相关阅读:
    第六节:数组的定义与使用【java】
    julia调用slurm进行多节点运行
    数据结构绪论
    HTTP协议
    Java基础(一)——Hello World,8种数据类型,键盘录入
    小程序学习
    创建数据库表提示Working outside of application context.
    树莓派4b开机自启sh脚本
    R函数optim()最小化或者最大化多参数函数
    virtio-net 实现机制【一】(图文并茂)
  • 原文地址:https://blog.csdn.net/A12536365214/article/details/134080716