JavaScript作用域详解

作用域可分为词法作用域和动态作用域,JavaScript 使用词法作用域,也称为静态作用域。

词法作用域是指变量的作用域在代码写好的时候就确定了,而不是在运行时确定。函数在定义的时候就决定了其作用域,而不是在调用的时候。

JavaScript 的作用域(Scope)是指在代码中定义变量时,这些变量在哪里以及在哪些地方可以被访问。作用域控制着变量的可见性和生命周期。在 JavaScript 中,有全局作用域和局部作用域的概念,作用域的规则由函数定义和代码块定义来决定。

1. 全局作用域(Global Scope)

全局作用域是指在整个 JavaScript 程序中都可访问的范围。在全局作用域中定义的变量和函数可以被任何地方访问,包括代码文件、函数内部、循环块等。例如:

var globalVariable = "I am global";

function globalFunction({
  console.log(globalVariable);
}

globalFunction(); // 输出: I am global

2. 局部作用域(Local Scope)

局部作用域是指在函数内部或代码块内部定义的变量,其可见性仅限于该函数或代码块内部。这种作用域遵循 "变量提升" 的规则,即变量在声明之前就可以被访问,但其值为 undefined。例如:

function localScopeExample({
  var localVariable = "I am local";
  console.log(localVariable);
}

localScopeExample(); // 输出: I am local
console.log(localVariable); // 错误,localVariable 不在此处可见

3. 块级作用域(Block Scope)

在 ES6 引入块级作用域概念,可以通过 letconst 关键字在代码块内定义变量,这使得变量在块级范围内有效。在此之前,JavaScript 只有函数作用域,使用 var 关键字定义的变量在整个函数范围内有效。

if (true) {
  let blockVariable = "I am in a block";
  console.log(blockVariable);
}

console.log(blockVariable); // 错误,blockVariable 不在此处可见

总结

作用域是 JavaScript 中重要的概念,理解作用域有助于正确使用变量、避免命名冲突,提高代码的可维护性。

本文由 mdnice 多平台发布

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

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

相关文章

【华为OD机试C++】生成随机数

《最新华为OD机试题目带答案解析》:最新华为OD机试题目带答案解析,语言包括C、C、Python、Java、JavaScript等。订阅专栏,获取专栏内所有文章阅读权限,持续同步更新! 文章目录 描述输入描述输出描述示例说明代码 描述 …

数码管时钟--LABVIEW编程

一、程序的前面板 1.获取系统时钟,年月日,时分秒,用14个数码管显示。 2.闹钟设定小时和分钟。 二、程序的后面板 三、程序运行图 四、程序源码 源程序可以在百度网盘自行下载,地址链接见下方。 链接:https://pan.b…

LeetCode-54. 螺旋矩阵【数组 矩阵 模拟】

LeetCode-54. 螺旋矩阵【数组 矩阵 模拟】 题目描述:解题思路一:定义上下左右四个边界,进行模拟。解题思路二:5行 Python zip函数图一乐解题思路三:0 题目描述: 给你一个 m 行 n 列的矩阵 matrix &#xf…

SketchUp Pro中文---3D建模与设计领域的专业选手

SketchUp Pro是一款功能强大的3D建模软件,广泛应用于建筑、城市规划、室内设计等领域。它拥有用户友好的界面和丰富的建模工具,支持实时查看、高 级扩展以及智能提示等功能,使得建模过程更加直观、灵活和高效。SketchUp Pro还支持自定义插件&…

java汇总区间

给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b] 应该按…

深入了解HTML:优化代码结构与兼容性考虑

介绍 1.html的定义 HTML(Hypertext Markup Language)是一种用于创建网页结构的标记语言。它由一系列的标签组成,每个标签都用于定义页面中的不同元素,如文本、图像、链接等。HTML文档由一个个HTML标签构成,这些标签通…

Jenkins插件下载错误时间问题

以下为错误原因,主要是虚拟机的时间和北京时间不一致造成的 java.security.cert.CertificateNotYetValidException: NotBefore: Tue Mar 26 10:14:30 UTC 2024 jenkins-jenkins-1 | 2024-03-25 19:36:03.9460000 [id72] INFO h.model.UpdateCenter$DownloadJob#run…

1033 To Fill or Not to Fill

是否有能到达的站点 无,输出当前距离(最后一个到达站点距离满油箱状态下行走距离)有 有价格更低的站点 如果油量不足以到达新站点,加刚好到达该站点的油量(只加可到达范围内最便宜的油)有价格更高的站点 在…

论文速览 | IEEE TCI, 2022 | 单光子级非视距成像:估计强度与优化重建

注1:本文系"计算成像最新论文速览"系列之一,致力于简洁清晰地介绍、解读非视距成像领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, SIGGRAPH, TPAMI; Light‑Science & Applications, Optica 等)。 本次介绍的论文是:<2…

前端开发学习笔记2 (CSS简介、CSS基础选择器、CSS字体属性、CSS文本属性和CSS引入方式)

文章目录 CSS简介CSS基本介绍CSS基本语法规范CSS代码风格 CSS基础选择器选择器的作用和分类标签选择器类选择器id选择器通配符选择器 CSS字体属性font-family字体类型设置font-size字体大小设置font-weight字体粗细设置font-style字体样式设置font字体复合属性设置 CSS文本属性…

Dimitra:基于区块链、AI 等前沿技术重塑传统农业

根据 2023 年联合国粮食及农业组织&#xff08;FAO&#xff09;、国际农业发展基金&#xff08;IFAD&#xff09;等组织联合发布的《世界粮食安全和营养状况》报告显示&#xff0c;目前全球约有 7.35 亿饥饿人口&#xff0c;远高于 2019 年的 6.13 亿&#xff0c;这意味着农业仍…

为什么跟着高手还是亏损?fpmarkets10秒解答

各位投资者&#xff0c;不知道你们有没有遇见这样的情况&#xff1f;不管是别人能够持续盈利的技术指标&#xff0c;还是业内知名的行业专家&#xff0c;只要是我们这些普通的投资者一旦使用持续盈利的技术指标&#xff0c;或者跟随专家顾问的信号同时在同一个方向建仓&#xf…

React中使用antDesign框架

1.在React项目中使用Ant Design&#xff0c;首先需要安装Ant Design: npm install antd --save 2.按需引入Ant Design组件&#xff0c;以减小最终打包的大小。使用babel-plugin-import插件可以实现按需加载。首先安装插件&#xff1a; npm install babel-plugin-import --save-…

solibity常用语法

引言 很久没写合约了&#xff0c;今天一写很多语法都忘记了&#xff0c;整理一下把 函数 语法描述public公有,任何人(拥有以太坊账户的)都可以调用 牢记private私有, 只有智能合约内部可以调用 牢记external仅合约外部可以调用&#xff0c;合约内部需使用this调用 先忽略inter…

python怎么处理txt

导入文件处理模块 import os 检测路径是否存在&#xff0c;存在则返回True&#xff0c;不存在则返回False os.path.exists("demo.txt") 如果你要创建一个文件并要写入内容 #如果demo.txt文件存在则会覆盖&#xff0c;并且demo.txt文件里面的内容被清空&#xff0c;如…

机器人规划算法——基于A-star和CostMap膨胀地图的全局规划(附Github源码链接)

前言 这段时间,笔者用c++写了一套机器人局部避障算法,并工程落地,机器人可以正常避障,避障所采用的技术方案是A*+TEB算法。并取得一定成果,后续还要针对复杂的场景继续优化。主要涉及到技术模块有: (1) costmap:代价地图模块,分为静态层和障碍物层以及膨胀层,静态层将…

Machine Learning机器学习之文本分析的词法分析、句法分析、语义分析(详细讲解)

目录 前言 词法分析&#xff1a; 词义消歧&#xff1a; 句法分析&#xff1a; 语义分析&#xff1a; 文本分析应用 1、文本分类&#xff1a; 设计过程&#xff1a; 代码实现&#xff1a; 完整代码&#xff1a; 2、情感分析&#xff1a; 总结 博主介绍&#xff1a;✌专注于前后…

计算机网络中---基本概念

什么是计算机网络 计算机网络是指利用通信设备和传输媒体,将地理位置不同的多台计算机连接在一起,以实现信息、资源和数据的共享和交换的系统。换句话说,计算机网络是由多台计算机通过通信设备和通信线路相互连接,形成一个整体,使得连接在网络中的计算机可以彼此之间进行数…

【Go】四、包名、访问范围控制、标识符、运算符

文章目录 1、_2、包名3、命名大小影响可访问范围4、运算符5、获取终端输入 1、_ 下划线"_"本身在Go中是一个特殊的标识符&#xff0c;称为空标识符用于忽略某个值 1&#xff09;忽略导入的没使用的包 2&#xff09;忽略某个返回值 2、包名 main包是程序的入口包&a…

[C++11] Lambda表达式完整解析

说明&#xff1a;C11中的Lambda表达式是一种允许创建匿名函数对象的语法结构。Lambda表达式可以捕获作用域中的变量&#xff0c;并且可以像普通函数一样被调用。它们是C11标准中引入的一个重要特性&#xff0c;旨在提供一种方便的方式来定义内联的小型函数&#xff0c;特别适用…