广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >JavaScript中怎么实现静态作用域和动态作用域
  • 607
分享到

JavaScript中怎么实现静态作用域和动态作用域

2024-04-02 19:04:59 607人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关javascript中怎么实现静态作用域和动态作用域,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript采用的是词

这篇文章将为大家详细讲解有关javascript中怎么实现静态作用域和动态作用域,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

JavaScript采用的是词法作用域即静态作用域;

// 静态作用域:
var a = 10;
function fn() {
  var b = 1;
  console.log(a + b);
}
fn(); // 11

在创建fn函数时的时候就已经确定了它可以作用哪些变量,如果函数fn里面有变量a就直接操作变量a,

如果没有就往上一级查找,这就是静态作用域

// 动态作用域:
function foo() {
  console.log(a);
}
function bar() {
  var a = 3;
  foo();
}
var a = 2;
bar(); // 2;

bar 调用,bar里面foo被调用,foo函数需要查找变量a,由于JavaScript是词法作用域(即静态作用域),foo被解析时在全局作用域.

所以只能在全局作用域中找a,输出结果为2,而非bar作用域中的a。如果js采用的时动态作用域,那么foo在bar中调用,就会先在bar中查询a,输出为3。

ps:下面看下JavaScript之静态作用域

作用域是指代码中定义变量的区域。作用域规定了如何查找变量,也就是确定当前代码对变量的访问权限。

静态作用域和动态作用域

静态作用域是指函数的作用域在函数定义时就已经确定了,而动态作用域是指函数的作用域在运行时才确定。下面是一段代码:

var value = 1;
function foo() {
    console.log(value);
}
function bar() {
    var value = 2;
    foo();
}
bar();

如果这段代码使用静态作用域的方式访问变量,那么执行foo()函数时,首先查看函数内是否存在局部变量value的定义,如果没有,则查找之前的代码,也就是var value = 1;,查找到了value的定义为1,因此输出1。
如果这段代码使用动态作用域的方式访问变量,那么执行foo()函数时,首先依旧从函数内部查找是否存在局部变量value的定义,如果没有,那么从调用方bar()函数的作用域中查找,找到了var value = 2;,因此输出2。
JavaScript采用静态作用域的方式访问变量,因此这个例子输出为1。

常见的采用动态作用域的语言是bash。

关于JavaScript中怎么实现静态作用域和动态作用域就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: JavaScript中怎么实现静态作用域和动态作用域

本文链接: https://www.lsjlt.com/news/65618.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript中怎么实现静态作用域和动态作用域
    这篇文章将为大家详细讲解有关JavaScript中怎么实现静态作用域和动态作用域,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript采用的是词...
    99+
    2022-10-19
  • 实例详解JavaScript静态作用域和动态作用域
    目录前言 静态作用域与动态作用域 静态作用域执行过程 动态作用域执行过程 习题 习题一 习题二 习题三 总结 前言 在文章最开始,先学习几个概念: 作用域:《你不知道的j...
    99+
    2022-11-12
  • JavaScript循环作用域怎么实现
    这篇文章主要讲解了“JavaScript循环作用域怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript循环作用域怎么实现”吧!   ...
    99+
    2022-10-19
  • JavaScript局部和全局作用域怎么实现
    这篇文章主要介绍“JavaScript局部和全局作用域怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript局部和全局作用域怎么实现”文章能帮助...
    99+
    2022-10-19
  • 使用Java怎么实现静态代理和动态代理
    本篇文章为大家展示了使用Java怎么实现静态代理和动态代理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。代理模式代理模式(Proxy):为其他对象提供一个代理以控制对这个对象的访问。主要解决:在直接...
    99+
    2023-06-14
  • JavaScript中怎么实现表单操作和表单域
    JavaScript中怎么实现表单操作和表单域,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、表单的获取方式1.docume...
    99+
    2022-10-19
  • springBean的作用域怎么实现
    本篇内容主要讲解“springBean的作用域怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springBean的作用域怎么实现”吧!如果想学习SpringBean的生命周期,那么就必须...
    99+
    2023-07-05
  • Android中使用Receiver怎么实现动态注册与静态注册
    Android中使用Receiver怎么实现动态注册与静态注册?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。广播接收器注册一共有两种形式 : 静态注册和动态注册.两者及其接...
    99+
    2023-05-31
    android receiver roi
  • HTML中函数的作用域和全局作用域怎么定义
    本篇内容主要讲解“HTML中函数的作用域和全局作用域怎么定义”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML中函数的作用域和全局作用域怎么定义”吧! 函...
    99+
    2022-10-19
  • JavaScript中变量和作用域是怎样的
    这期内容当中小编将会给大家带来有关JavaScript中变量和作用域,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 JavaScript的变量与其他语言的变量有很大区别。...
    99+
    2022-10-19
  • 免费动态域名解析服务器的作用是什么
    免费动态域名解析服务器的作用是将动态IP地址与域名进行绑定,使得用户可以通过域名来访问动态IP地址所对应的服务器或设备,而不需要记住...
    99+
    2023-06-12
    免费动态域名解析 域名
  • JS怎么利用clip-path实现动态区域裁剪功能
    这篇文章给大家介绍JS怎么利用clip-path实现动态区域裁剪功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。背景今天逛 CodePen,看到了这样一个非常有意思的效果:CodePen Demo -- Materi...
    99+
    2023-06-22
  • JavaScript闭包和作用域链的定义实现
    目录引言闭包的定义和实现作用域链闭包和作用域链的关系使用闭包的注意事项结论引言 在JavaScript中,每个函数都有自己的作用域。作用域规定了哪些变量和函数可以在当前函数内部访问。...
    99+
    2023-05-20
    JavaScript闭包作用域链 JavaScript作用域链
  • php中静态方法有什么作用?怎么使用?
    PHP是一款以服务端脚本语言为主的编程语言,它主要用于Web应用程序的开发。在PHP中,静态方法是其中一种非常有用的语法特性之一,对于编写复杂的应用程序尤其有帮助。在本文中,我们将介绍PHP中静态方法的作用以及如何在应用程序中使用它们。一、...
    99+
    2023-05-14
    php
  • 使用SpringBean怎么实现作用域管理
    这篇文章给大家介绍使用SpringBean怎么实现作用域管理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、前言创建 BeanDefinition 时,就等于创建了一个配方,用于创建由 BeanDefinition ...
    99+
    2023-06-15
  • 怎么理解并掌握JavaScript中变量和作用域
    这篇文章主要讲解了“怎么理解并掌握JavaScript中变量和作用域”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解并掌握JavaScript中变量和作用域”吧!JavaScript的...
    99+
    2023-06-02
  • JavaScript块级作用域的实现原理是什么
    这篇文章主要讲解了“JavaScript块级作用域的实现原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript块级作用域的实现原理是什...
    99+
    2022-10-19
  • Linux中怎么利用wxWidgets实现静态编译
    Linux中怎么利用wxWidgets实现静态编译,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。编译静态版wxWidgets在Linux下配置wxWidgets的静态编译,...
    99+
    2023-06-13
  • vue作用域分为什么及怎么实现
    这篇文章主要介绍“vue作用域分为什么及怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue作用域分为什么及怎么实现”文章能帮助大家解决问题。1. 全局作用域Vue 应用程序中的全局作用域与...
    99+
    2023-07-04
  • Android中怎么利用广播实现静态注册
    Android中怎么利用广播实现静态注册,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。而Android中的广播机制则更为灵活,因为每个应用程序可以对自己感兴趣的广播进行注册,这...
    99+
    2023-06-04
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作