作用域有哪些分别有什么区别呢

1.局部作用域(Function - level Scope)

  • 定义与概念
    • 在 JavaScript 中,函数内部定义的变量拥有局部作用域。这意味着这些变量只能在函数内部被访问和修改,函数外部无法直接获取它们的值。这种作用域机制是基于函数来划分的,每个函数都有自己独立的作用域。
function myFunction() {
    var localVariable = 10;
    console.log(localVariable);
}
myFunction();
console.log(localVariable); // 这会导致报错,因为localVariable是函数内部的局部变量
  • 在这个代码中,localVariable是在myFunction函数内部定义的。它的作用域仅限于myFunction函数内部,一旦函数执行完毕,这个变量就会被销毁(在 JavaScript 的垃圾回收机制下)。
  • 用途和重要性
    • 局部作用域有助于封装代码。它使得函数内部的逻辑可以独立于外部环境,不会因为外部变量的干扰而出现意外的结果。同时,不同函数中的局部变量可以同名,而不会相互冲突,这提高了代码的可维护性和可读性。例如,在一个复杂的 JavaScript 应用程序中,不同的函数可能会处理自己的数据,使用局部作用域可以确保这些数据的独立性。

2.块作用域(Block - level Scope)

  • 定义与概念
    • 块作用域是由一对花括号{}包裹的代码块所限定的作用域。在 JavaScript 中,使用letconst关键字声明的变量具有块作用域。在块内部定义的变量,在块外部是无法访问的。
{
    let blockVariable = 20;
    console.log(blockVariable);
}
console.log(blockVariable); // 这会导致报错,因为blockVariable是块级变量,块外无法访问
  • 在这里,blockVariable是在一个块(花括号包裹的部分)内部使用let声明的变量。它只能在这个块内部被访问,出了这个块,变量就超出了它的作用域范围。
  • 用途和重要性
    • 块作用域增强了 JavaScript 代码的灵活性和安全性。在循环、条件语句等代码块中,使用块作用域可以避免变量泄漏到外部环境。例如,在for循环中使用let声明循环变量,每次循环迭代时,变量都有自己独立的作用域,这有助于避免一些常见的闭包问题。

3.全局作用域(Global Scope)

  • 定义与概念
    • 全局作用域是在 JavaScript 脚本的最外层定义的范围,或者是挂载在window(在浏览器环境下)或global(在 Node.js 环境下)对象上的变量所拥有的作用域。全局变量可以在脚本的任何地方被访问,包括函数内部,除非在函数内部有同名的局部变量对其进行了遮蔽。
var globalVariable = 30;
function anotherFunction() {
    console.log(globalVariable);
}
anotherFunction();
console.log(globalVariable);
  • 在这个代码中,globalVariable是在全局范围内定义的变量。它可以在anotherFunction函数内部被访问,也可以在脚本的其他任何位置被访问。
  • 用途和重要性
    • 全局变量可以用于在整个应用程序中共享数据。不过,过度使用全局变量可能会导致代码的可维护性和安全性问题。因为全局变量可以在任何地方被修改,可能会导致意想不到的副作用。所以,在实际的 JavaScript 编程中,应该谨慎使用全局变量,只有在真正需要在多个函数或模块之间共享数据时才考虑使用。同时,可以通过模块系统(如 ES6 模块)来更好地管理全局数据的访问和共享。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Creo 9.0 中文版软件下载安装教程

[软件名称]:Creo 9.0 [软件语言]:简体中文 [软件大小]:5.2G [安装环境]:Win11/Win10/ [硬件要求]:内存8G及以上 下载方法:电脑打开浏览器,复制下载链接,粘贴至浏览器网址栏&…

RT-DETR融合CVPR[2024]无膨胀多尺度卷积PKI模块及相关改进思路

RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《Poly Kernel Inception Network for Remote Sensing Detection》 一、 模块介绍 论文链接:https://arxiv.org/abs/2403.06258 代码链接:https://github…

ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法)

ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法) 一、更新并安装基础软件 #切换root用户 sudo su -#更新 apt update #升级 apt upgrade#install vim apt install vim#install net-tools apt install net-tools二、安装ssh并设置…

[CKS] K8S ServiceAccount Set Up

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于Rolebinding的题目。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] K8S Netwo…

介绍和安装及数据类型

1、介绍和安装 1.1、简介 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 OLAP&…

算法魅力-二分查找实战

目录 前言 算法定义 朴素二分模版 二分查找 二分的边界查找 在排序数组中查找元素的第一个和最后一个位置(medium) 暴力算法 二分查找 边界查找分析 山峰数组的峰顶 暴力枚举 二分查找 搜索旋转排序数组中的最小值(medium&#xf…

Linux第四讲:Git gdb

Linux第四讲:Git && gdb 1.版本控制器Git1.1理解版本控制1.2理解协作开发1.3Git的历史1.4Git的操作1.4.1仓库创建解释、仓库克隆操作1.4.2本地文件操作三板斧1.4.3文件推送详细问题 2.调试器 -- gdb/cgdb使用2.1调试的本质是什么2.2watch命令2.3set var命令…

海底捞点单

单点锅底推荐: 番茄锅底通31 牛油麻辣通44 清汤麻辣备44 菌汤锅底通31 小吃&主食: 捞派捞面一黄金小馒头一茴香小油条 红糖枇杷一小酥肉 DIY锅底推荐: 1.寿喜锅:海鲜味酱4勺陈醋1勺蚝油2勺盐适量白糖7勺 芹菜1勺 2.麻辣锅底…

PNG图片批量压缩exe工具+功能纯净+不改变原始尺寸

小编最近有一篇png图片要批量压缩,大小都在5MB之上,在网上找了半天要么就是有广告,要么就是有毒,要么就是功能复杂,整的我心烦意乱。 于是我自己用python写了一个纯净工具,只能压缩png图片,没任…

达梦8数据库适配ORACLE的8个参数

目录 1、概述 1.1 概述 1.2 实验环境 2、参数简介 3、实验部分 3.1 参数BLANK_PAD_MODE 3.2 参数COMPATIBLE_MODE 3.3 参数ORDER_BY_NULLS_FLAG 3.4 参数DATETIME_FMT_MODE 3.5 参数PL_SQLCODE_COMPATIBLE 3.6 参数CALC_AS_DECIMAL 3.7 参数ENABLE_PL_SYNONYM 3.8…

如何低成本、零代码开发、5分钟内打造一个企业AI智能客服?

传统客服因员工效率低、时段需求波动大、数据管理费时费力等管理难题,导致难以满足用户需求,无法深入挖掘客服数据价值,造成客源流失。而智能体搭建的“智能客服”能借助大模型和知识库知识,助力实现数字化运营,破解企…

CC1链学习记录

🌸 前言 上篇文章学习记录了URLDNS链,接下来学习一下Common-Colections利用链。 🌸 相关介绍 Common-Colections是Apache软件基金会的项目,对Java标准的Collections API提供了很好的补充,在其基础上对常用的数据结构…

【启明智显分享】5G CPE为什么适合应用在连锁店中?

连锁门店需要5G CPE来满足其日益增长的网络需求,提升整体运营效率和竞争力。那么为什么5G CPE适合连锁店应用呢,小编为此做了整理,主要是基于以下几个方面的原因: 一、高效稳定的网络连接 1、高速数据传输: 5G CPE能…

怎么禁止文件外发?企业如何禁止文件外发,教你6种方法,综合运用效果加倍

在当今数字化的商业环境中,企业内部文件承载着大量关键信息,犹如企业的命脉。这些文件可能包含着核心技术机密、客户资料、未公开的战略规划以及敏感的财务数据等,它们是企业在激烈市场竞争中立足的重要资产。然而,随着信息传播途…

FPGA学习笔记#8 Vitis HLS优化总结和案例程序的优化

本笔记使用的Vitis HLS版本为2022.2,在windows11下运行,仿真part为xcku15p_CIV-ffva1156-2LV-e,主要根据教程:跟Xilinx SAE 学HLS系列视频讲座-高亚军进行学习 学习笔记:《FPGA学习笔记》索引 FPGA学习笔记#1 HLS简介及…

替代CX8835车充5V/3.4A恒流恒压降压转换器内置MOS

概述:PIN对PIN替代CX8835 PC3313是宽输入电压,高效率有源CC降压DC/DC转换器,可以在CV(恒压)或CC模式下运行(恒流)输出模式。PC3313在5V输出时提供高达典型3.4A的电流限制带有18mΩ电流感测电阻…

2024年8个最佳在线websocket调试工具选择

精选了 8 款功能强大且易于使用的 WebSocket 测试工具: 工具名称支持的系统是否免费ApifoxWindows, Mac, Linux是WebSocket KingWindows, Mac, Linux是PostmanWindows, Mac, Linux是Socket.IO Test ClientWindows, Mac, Linux是InsomniaWindows, Mac, Linux是Wires…

ML 系列:第 21 节 — 离散概率分布(二项分布)

一、说明 二项分布描述了在固定数量的独立伯努利试验中一定数量的成功的概率,其中每个试验只有两种可能的结果(通常标记为成功和失败)。 二、探讨伯努利模型 例如,假设您正在抛一枚公平的硬币 (其中正面成功&#xff…

2024开发者浏览器必备扩展,不允许还有人不知道~

在开发过程中,优秀的扩展工具能够极大提升我们的工作效率,简化工作流程,并使得在浏览器中的开发和调试变得更加便捷。 根据市场占比,Chrome、Safari、Edge、Firefox、Opera 是前五大浏览器,其中Chrome浏览器占据了领先…

安装paddle

网址:飞桨PaddlePaddle-源于产业实践的开源深度学习平台 或者找对应python和cuda版本的paddle下载后安装: https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html 你想要安装paddlepaddle - gpu2.6.1.post112版本。在你提供的文件列表中&am…