作用域 (局部作用域和全局作用域) 详细介绍

news2024/9/24 11:22:18

作用域 (局部作用域和全局作用域) 详细介绍

作用域是当前的执行上下文,值和表达式在其中“可见”或可被访问。

常见的作用域为:
全局作用域:脚本模式运行所有代码的默认作用域
函数作用域:由函数创建的作用域
局部作用域:用对象{}包着(一个代码块)创建出来的作用域

了解作用域之前先看一下全局变量和局部变量
  • 全局变量
    1、在全局作用域下声明的变量叫做 全局变量(在函数外部定义的变量)

    2、全局变量在全局(代码的任何位置)下都可以使用;全局作用域中无法访问到局部作用域中的变量。

以下我们用var创建的就是全局变量:

<script>
var value = 66;
    function method(){
        console.log(value);
    }
method();
console.log(value);
</script>

全局变量会提升但并不会赋值:所以 在创建之前log是undefined 的
亿点小知识:变量提升和上文提到触发时间有关。我们知道,var 和 function 声明的变量可以在声明前访问,这就是因为变量提升的缘故。

<script>
    console.log(value); // undefined 
    var value = 66;
	console.log(value); // 66
</script>
  • 局部变量
    1、在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量)

    2、局部变量只能在函数内部使用,在局部作用域中可以访问到全局变量。

在函数的内部创建变量也是局部变量:

<script>
    function method(){
    	var value = 66;
        console.log(value); // 66
    }
method();
console.log(value); //value is not defined
</script>
全局作用域和局部作用域的区别
  • 全局作用域
    全局作用域中的变量称为全局变量,可以在任何作用域内访问。有两种全局变量:

1.全局声明变量是普通变量,在最顶级由 const、let 和 class 声明的变量。
2.全局对象是存储在全局对象中的属性
亿点小知识:所有创建的变量都会作为 window 对象的属性保存

<script>
var value = 66; // 在整个全局都可以获取到 value
    function method(){
        console.log(value); // 全局方法内部也可以获取到 value 
    }
method();
</script>
  • 局部作用域
    作用域对变量来说,可以简单理解为程序能够访问到变量的范围,超过作用域的就无法访问。
{ 
    // 外面这个 a 作用域,可以访问变量 a
    const a = 0; 
    console.log(a); // 0
    {
        // 里面这个 b 作用域,可以访问 a、b
        const b  = 1;
        console.log(a); // 0
        console.log(b); // 1
    }
}
// 最外面的作用域 不能访问 a,b
console.log(a); // 报错:Uncaught ReferenceError: a is not defined
  • 函数作用域
    在函数内部定义的变量,就是局部作用域。函数作用域内,对外是封闭的,从外层的作用域无法直接访问函数内部的作用域
function method(){
    let value = '内容';
}
console.log(value ) //报错:ReferenceError:value is not defined

在这里插入图片描述

以上就是局部作用域和全局作用域感谢大家的阅读
如碰到其他的问题 可以私下我 一起探讨学习
如果对你有所帮助还请 点赞 收藏谢谢~!
关注收藏博客 作者会持续更新…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

附录1-小程序常用标签

目录 1 view 2 scroll-view 3 swiper与swiper-item 4 text 5 rich-text 6 button 7 image 1 view 相当于html的div 2 scroll-view scroll-view是一个有滚动条的div scroll-y是允许纵向滚动&#xff0c;scroll-x是允许横向滚动 3 swiper与swiper-item swipe…

文盘Rust -- tokio绑定cpu实践 | 京东云技术团队

tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢&#xff1f;这次我们来聊聊这个话题。 首先我们先写一段简单的多任务程序。 use tokio::runtime; pub fn main() {let rt runtime::Builder::new_mu…

华为OD机试真题 Java 实现【通信误码】【2022Q4 100分】,附详细解题思路

一、题目描述 信号传播过程中会出现一些误码&#xff0c;不同的数字表示不同的误码ID&#xff0c;取值范围为1~65535&#xff0c;用一个数组记录误码出现的情况。 每个误码出现的次数代表误码频度&#xff0c;请找出记录中包含频度最高误码的最小子数组长度。 二、输入描述 …

Nginx+花生壳实现个人网站

下载Nginx Windows版本&#xff0c;目前稳定版1.24&#xff0c;Mainline的版本是1.25 Nginx下载后是一个zip文件&#xff0c;选择适当的位置解压。 首先修改一下Nginx的配置文件nginx.conf&#xff0c;位于conf目录下面&#xff1a; 配置文件我只修改了访问的端口号&#xff…

文件操作之文件包含全解(31)

文件包含的作用就是将这个文件包含进去之后&#xff0c;会调用指定文件的代码。先将文件包含才能执行里面的一些相关代码&#xff0c;比如所想进行文件的链接&#xff0c;数据库的查询&#xff0c;就可以先包含一个数据库的配置文件&#xff0c; 再去链接的话就享有配置文件的一…

2023年6月北京/广州/深圳CDGA/CDGP数据治理认证招生

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

C#发送邮箱设置及源码

用C#调用发送邮箱代码之前需要邮箱开通SMTP/POP3及设置授权码&#xff0c;开通及获取方法如下&#xff1a; 1、打开邮箱&#xff0c;登录邮箱&#xff0c;进入设置&#xff0d;》帐户 2、在“帐户”设置中&#xff0c;找到服务设置项&#xff0c;进行设置&#xff0c;如下…

什么是软件测试?这份工作到底怎么样?

什么是软件测试&#xff1f;这份工作到底怎么样&#xff1f; 着人工智能时代的到来&#xff0c;IT行业受到了越来越多人的重视。软件测试作为把控软件质量必不可少的环节&#xff0c;其重要性可见一斑。 那么从事软件测试行业究竟有前途吗?今天我们就来详细的介绍一下软件测…

第34步 机器学习实战DLC:不平衡数据处理(上)

失踪人口回归的第一期&#xff0c;来说一说不平衡数据。 一、不平衡数据的概念 什么是不平衡数据&#xff1f;我们先来看看小Chat怎么说的&#xff1a; 顾名思义&#xff0c;就是你的因变量1和0的样本数差距有点大&#xff0c;大到影响了模型性能。举个栗子&#xff0c;一个盒…

详解CenterFusion损失函数初始化及前向传播过程

CenterFusion损失函数Loss初始化_get_losses函数以及计算过程forward函数 1. 损失函数初始化前序运行逻辑2. 损失函数初始化2.1 loss函数初始化——Trainer类中的_get_losses()函数2.2 model_with_loss的初始化 3. loss计算过程前序运行逻辑4. loss计算过程4.1 loss计算函数调用…

chatgpt赋能python:Python圆柱体积计算器:简单、高效、快速解决计算难题

Python圆柱体积计算器&#xff1a;简单、高效、快速解决计算难题 圆柱体积是一个在日常生活、工程学、数学等领域都十分普遍的概念&#xff0c;可以用来计算许多实际问题中的体积&#xff0c;比如容器的容量、建筑材料的用量等等。在本文中&#xff0c;我们将介绍如何使用Pyth…

部署和配置DHCP服务器实验:自动分配IP地址和网络配置

部署和配置DHCP服务器实验&#xff1a;自动分配IP地址和网络配置 【实验目的】 部署DHCP服务器。熟悉DHCP服务器的配置方法。验证拓扑。 【实验拓扑】 实验拓扑如图所示。 设备参数如下表所示。 设备 接口 IP地址 子网掩码 默认网关 DHCPSERVE F0/0 172.16.10.1 25…

大学生必知必会技能系列02--虚拟机安装

学习linux的时候&#xff0c;在自己的pc笔记本上安装Linux不太方便&#xff0c;解决方法是&#xff0c;在笔记本上安装 vmware虚拟机,然后再把计划要学习的Linux版本安装到虚拟机中&#xff0c;此时外部电脑能办公&#xff0c;虚拟机上的 代码也能正常运用。 一、VMware 17 虚拟…

2023年6月杭州/广州/东莞/深圳软考(中/高级)认证招生简章

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

09 【CLI 初始化脚手架 Vue零碎的一些知识】

09 【CLI 初始化脚手架 Vue零碎的一些知识】 1.Vue CLI 初始化脚手架 1.1具体步骤 1如果下载缓慢请配置npm淘宝镜像npm config set registry http://registry.npm.taobao.org 2全局安装 vue/cli npm install -g vue/cli 3切换到创建项目的目录&#xff0c;使用命令创建项目v…

递增子序列

1题目 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一种特殊情况。 示例 1…

苹果MacOS系统傻瓜式本地部署AI绘画Stable Diffusion教程

Stable Diffusion的部署对小白来说非常麻烦&#xff0c;特别是又不懂技术的人。今天分享两个一键傻瓜式安装包&#xff0c;对小白来说非常有用。下面两个任选一个安装就可以。 一、DiffusionBee 简单介绍 DiffusionBee是基于stable diffusion的一个安装包&#xff0c;有图形…

BIO NIO AIO之间的区别与联系

目录 前言五种I/O模型1.同步阻塞I/O, BIO2.同步非阻塞I/O, NIO3.多路复用IO4.信号驱动I/O5.异步I/O&#xff0c;AIO 同步阻塞&#xff1f;异步非阻塞&#xff1f;1.阻塞I/O 与 非阻塞I/O2.同步I/O 与 异步I/O Netty采用了哪种I/O模型? 前言 Unix系统下的五种基本I/O模型 blo…

【Jenkins】什么?前端还能用Jenkins一键部署?

前置要求&#xff1a; Jenkins安装nodejs插件&#xff08;本篇文章会教&#xff09; Linux安装Node.js&#xff08;图文解说详细版&#xff09; 如果你是一名前端工程师&#xff0c;那么你可能会对Jenkins这个自动化构建工具并不陌生。但是&#xff0c;你有没有想过在前端项目中…

Python+Django图书商城网站前后端

程序示例精选 PythonDjango图书商城网站前后端 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonDjango图书商城网站前后端 >>编写代码&#xff0c;代码整洁&#xff0c;规…