首页 > 编程语言 >JavaScript 变量的作用域链

JavaScript 变量的作用域链

时间:2024-09-27 11:04:24浏览次数:6  
标签:function 变量 父级 作用域 代码 JavaScript 函数

作用域链本质上就是使用的是哪个变量,全局变量,局部变量,自身的变量。这个在看别人代码的逻辑的时候非常有用,底层是变量的查找机制。

  • 嵌套关系的作用域窜连起来形成了作用域链
  • 在函数被执行,会优先查找当前函数作用域中的变量。
  • 如果当前函数作用域找不到,则会逐级查找父级作用域,知道全局作用域
  • 相同作用域链中按着从小到大的规则查找变量
  • 子作用域能够访问父作用域,父作用域无法访问子作用域

 代码一:

//   作用域链
let a = 6;//全局作用域
function f() {
    function d(){
        console.log(a);
    }
    d();
}
f();

上述代码输入的是6 ,函数d()最后找到了全局作用域

代码二:

let a = 6;//全局作用域
function f() {
    a = 7;//父级作用域
    function d(){
        console.log(a);
    }
    d();
}
f();

上述代码输入的是7,函数d()找到了父级作用域

代码三:

//   作用域链
let a = 6;//全局作用域
function f() {
    a = 7;//父级作用域
    function d(){
        a = 8;//自己的作用域
        console.log(a);
    }
    d();
}
f();

上述代码输出的是8,最后找到函数自身的变量,函数自身的作用域优先级最高

标签:function,变量,父级,作用域,代码,JavaScript,函数
From: https://www.cnblogs.com/yansunda/p/18435226

相关文章

  • 8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特
    特征工程是机器学习流程中的关键步骤,在此过程中,原始数据被转换为更具意义的特征,以增强模型对数据关系的理解能力。特征工程通常涉及对现有数据应用转换,以生成或修改数据,这些转换后的数据在机器学习和数据科学的语境下用于训练模型,从而提高模型性能。本文主要介绍处理数值变量特......
  • JavaScript null和0和undefined的比较
    null和0和undefined的比较alert(null>0); //(1)falsealert(null==0);//(2)falsealert(null>=0);//(3)true注意:这是因为相等性检查 == 和普通比较符 ><>=<= 的代码逻辑是相互独立的。进行值的比较时,null 会被转化为数字,因此它被转化为了 0。这就是为......
  • javascript 匿名函数之立即执行
    函数分为具名函数和匿名函数,具名函数需要先声明在进行调用,而匿名函数是完全没有值。例如:我们设置点击事件中的function就是匿名函数document.addEventListener('click',function(){})我们可以设置匿名函数立即执行。好处是一方面可以防止变量污染,另外一方面,......
  • JavaScript的条件语句
    if条件语句if结构先判断一个表达式的布尔值,然后根据布尔值的真伪,执行不同的语句。所谓布尔值,指的是JavaScript的两个特殊值,true表示真,false表示伪。if语句语法规范if(布尔值){语句;}varm=3if(m===3){console.log(true)......
  • 选择数字 - HakerRank 解决方案 - Javascript
    给定一个整数数组,找到任意两个元素之间的绝对差小于或等于的最长子数组例子_a=[1,1,2,2,4,4,5,5,5]_有两个满足条件的子数组:[1,1,2,2]和[4,4,5,5,5]。最大长度子数组有5个元素。功能说明在下面的编辑器中完成pickingnumbers函数。pickingnumbers有以下参数:int......
  • 解锁 JavaScript 中“navigator”对象的强大功能:综合指南
    javascript中的导航器对象是一个功能强大的工具,它允许web开发人员以远远超出简单网页交互的方式与用户的浏览器和设备进行交互。从访问地理位置数据到管理设备存储,导航器对象是一个功能宝库,可以增强web应用程序的功能。在本博客中,我们将探索导航器对象的一些最有用的功能,并提......
  • 解锁 JavaScript 的超能力:变量的魔力
    从今天开始,我们将探索编程的世界。?你拥有超能力的世界。是的,你没看错,超能力。如果不是超能力,那又是什么?使用javascript,您可以让物体飞、移动、消失、改变颜色,并在数英里之外看到您的朋友,而这只是可能的一小部分。是的,一切都在你的屏幕上,但仍然非常令人兴奋。像任何超级英雄一样,......
  • 理解 JavaScript 中的对象
    您是否遇到过需要在javascript代码中存储一组复杂信息的情况?例如,您需要将用户的数据存储在数据库中,例如姓名、年龄和地址。您将使用什么javascript框架来完成此任务?在本文中,我们将了解对象如何在此类任务中发挥作用,并了解javascript中这一重要数据集合的含义。跟我来吧!......
  • 理解 JavaScript 数组迭代方法
    我最近遇到一个面试问题,要求使用不同的方法来迭代javascript数组对象。提示最初看起来很简单,因为我应该提供一些示例代码片段。然而,这个问题引起了我的兴趣,所以我决定更深入地研究每种方法,不仅探索如何使用它们,而且探索何时以及为何选择一种方法而不是另一种方法。在本文中,我将......
  • 每个开发人员都应该掌握的 JavaScript 数组方法(第 1 部分)
    “能力越大,责任越大。”—本叔叔,蜘蛛侠(2002)就像蜘蛛侠必须掌握他新发现的能力一样,开发人员需要掌握javascript强大的数组方法才能高效、负责任地进行编码。让我们深入研究一些必须知道的数组方法!1.查找find()方法返回满足所提供的测试函数的第一个数组元素的值。ar......