js 作用域

JS作用域+this指向 【JavaScript】 js作用域 this指向及关于this指向的面试题 箭头函数和普通函数的this指向区别 阅读详情

作用域

标识符生效的范围,比如一个变量,这某个范围生效,出来了这个范围就访问不到了。

全局作用域

个script标签或一个js文件中会形成一个区域叫全局作用域,在srcipt标签内的全局作用域中定义的变量是全局变量,在全局作用域内可以访问。

<script>
//全局作用域中的变量
var a = 20;
function a(){
	/*
	函数也在全局作用域里面
	因此函数也可以访问在全局作用域中的变量
	*/
	console.log(a);
}
</script>

局部作用域

在函数内部也会形成作用域也叫局部作用域,在函数里定义的变量是局部变量,只在函数内部起作用,对外不可见。

function a(){
	var p = 20;
}
//报错。p是局部变量只能在函数内起效
console.log(p);

访问标识符符合一个原则,里面的可以访问外面的,不管嵌套多少层都可以访问,外面的就是不能访问里面,换句话说局部作用域是在外部作用域范围内的,站在内部函数的角度考虑,它处在外部环境的内部,所以在函数是可以访问到外部的,而反过来不行。

例子:
以下代码中fn3不光在fn2的环境中也在fn1和全局的环境中,因此可以访问到全局、fn1、fn2、fn3中的变量,而反过来不行。

function fn1(){
	var a = 30;
	function fn2(){
		var b = 20;
		function fn3(){
			var c = 10;
			//60 a、b、c都可以访问到
			console.log(a + b + c);
		}
		fn3()
		//报错
		console.log(c)
	}
	fn2();
}
fn2()

作用域链
如果在不同的作用域中有同名的变量该怎么访问?

var a = 0
function fn1(){
	var a = 1;
	function fn2(){
		var a = 2;
		//2
		console.log(a);
	}
	fn2();
}
fn1();

结果: 2
标识符查找的规则: 就近原则,当在函数作用域中操作一个变量时,会先从自己的作用域中查找有没有这个标识符,如果有,就使用这个标识符的值,如果没有就去上一层的作用域找这个标识符,直到找到全局作用域为止,如果全局作用域依然没有这个标识符,则抛出错误: test is not defined,这种链式查找关系我们称为作用域链。

Transformer代码(Pytorch实现和详解)!!! 这个是第一版,有些代码如果不对,欢迎在评论指正,后续会慢慢改,我也是刚接触transformer,若有些地方理解不对还请指正。 阅读详情

相关推荐

从软体机器人到鞋垫分析:Abaqus超弹性材料(Ogden模型)仿真配置全流程

本文详细介绍了Abaqus中Ogden模型在超弹性材料仿真中的应用全流程,涵盖从实验数据导入、参数拟合到模型构建与求解优化的关键步骤。特别针对鞋垫分析等生物力学场景,提供了单元选择、接触设置和并行计算等实用技巧,帮助工程师实现高精度仿真分析。

weixin_42525385的博客 400

javaScript 详解作用域

文章目录作用域作用域链静态作用域和动态作用域全局作用域和局部作用域 作用域 概念:作用域管理着变量和函数的可访问范围,哪个位置可以访问哪些函数或变量都由它把关 啥意思呢?上图: 每个圈代表着可以管理的范围,如作 作用域链 静态作用域和动态作用域 全局作用域和局部作用域 ...

lzb_50301的博客 343

一文搞定3D卷积

在讨论卷积核的时候,是不把channel维加进去的 核 = 一个可以滑动的窗口 窗口内不同位置数据之间的权值共享 3D卷积,卷积核会在3个方向上运动,那么卷积核的运动需要有三个自由度(一小块立方体,在一个大面包块内3个方向上滑动 2D卷积,卷积核只在2个方向上运动,因此只有两个自由度(一小片纸,在一大张纸内2个方向上滑动 1D卷积,卷积核只在1个方向上运动,因此只有一个自由度(一条滑窗,在一大长线上1个方向上滑动 一个卷积核运算一次 得到一个输出值 以上讨论了单个卷积核,接下来考虑多通道,一个卷积核对应一

njuptalex的博客 3万+

JavaScript之export和import的简单使用

本文主要介绍JavaScript中export和import的使用,从而实现不同js文件之间的数据共享。1.新建文件夹,在该目录下创建3个文件,如图所示2.在1.js文件中定义一些数据,包括变量a和函数b,变量a的值为189,b函数的功能是实现任意数的累加和。定义完成后,通过export将a和b共享出去。 3.在2.js文件中利用import获取a和b,即可使用 4.在2.html文件中引入2.js文件,type类型需改为“module”,最后通过浏览器执行(需要通过Web服务器打开) 执行结

weixin_44827643的博客 2632

LightRAG实战:5分钟快速搭建一个轻量级法律问答系统(附完整代码)

本文通过实战指南,详细介绍了如何使用LightRAG技术快速搭建一个轻量级法律问答系统。该方案通过构建扁平化实体关系网络和混合检索策略,在5分钟内即可完成从环境准备到智能问答的完整流程,并附有完整代码,为中小团队和个人开发者提供了高效、低成本的AI应用解决方案。

time3的博客 279

手把手教你为智能手表DIY一个离线导航:LVGL + SD卡地图实战

本文详细介绍了如何为智能手表DIY一个离线导航系统,结合LVGL图形库和SD卡地图数据。从硬件选型、地图数据处理到LVGL地图引擎实现,提供了完整的实战指南,特别适合户外运动爱好者和嵌入式开发者。文章还分享了功耗优化、性能提升等实用技巧,帮助读者打造高效的离线导航解决方案。

weixin_42570484的博客 206

前端web学习之路(一) 避免js冲突

123

xiabin19891230的专栏 1313

保姆级教程解决Edge Copilot该服务在你所在的地区不可用及Sign in to continue your chat.——电脑篇

相信很多人更新到Win11之后都注意到自带的浏览器右上角多了一个Copilot,这个副驾驶是微软与OpenAI合作,免费使用,包括插件功能。相当于你可以在电脑上免费的使用GPT4。很可惜,点开提示该服务在你所在的地区不可用。很多人第一时间想到科学的上网应该就可以解决了,尝试后又提示you’ve reached the conversation limit for today.Sign in to continue your chat.明明登录账号了为什么还是不能用?不是免费吗,为什么提示今天受限制。 其实上

weixin_44887342的博客 5万+

Js作用域与作用域链详解

一直对Js的作用域有点迷糊,今天偶然读到Javascript权威指南,立马被吸引住了,写的真不错。我看的是第六版本,相当的厚,大概1000多页,Js博大精深,要熟悉精通需要大毅力大功夫。 一:函数作用域    先看一小段代码:var scope="global"; function t(){ console.log(scope); var scope="local" c

Skycrab 13万+

微信小程序 - 详解苹果ios手机请求不到数据访问不了接口,但安卓却可以正常访问。wx.request苹果手机IOS请求失败、安卓可以请求成功(微信小程序上线后苹果手机不能访问接口,网络请求失败排查)

微信小程序上线后,苹果手机请求不到数据,安卓可以,微信小程序,安卓可以调接口,苹果调不了的解决方案,微信小程序:IOS访问不了接口,安卓可以正常访问,微信小程序ios版本连接不了服务器,小程序Android可以请求,ios请求失败wx.request,成功上线的小程序,安卓机可以正常访问使用,苹果微信小程序不执行请求,苹果系统无法加载数据,微信小程序 iOS 网络失败,微信小程序接口请求在ios端报错,苹果手机真机调试微信小程序出现网络请求失败,微信小程序 安卓正常 ios调接口显示网络请求失败,微信小程序

🏆 前端领域优质创作者 4369

使用 WSL 在 Windows 上安装 Linux

开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。

隔壁老瓦的专栏 2872

前端js入门——JavaScript 作用域

在MDN或者其他权威教程上,对于作用域的解释无一例外是与可见性和生命周期相关。 作为最重要的概念之一,初学者往往会惑于上述高大上的理论阐述。 所以从浅显处入手,可能更有助于对于概念的入门和深入理解。 作用域通俗的讲就是变量或者函数的“势力范围”,在此范围内,变量可以被引用,函数可以被调用。 JavaScript具有两种作用域: (1).全局作用域。 (2).函数作用域。 特别说明:ES2015新增...

fenghulun的博客 7403

13、Java 中 MQTT 异步通知与回调的使用及传感器命令处理

本文详细介绍了在 Java 中使用 MQTT 的异步通知与回调机制,并展示了如何通过 Paho Java 客户端处理与传感器交互的命令。文章包含代码示例,讲解了 MQTT 客户端的连接、订阅、消息处理以及模拟传感器数据发布的过程,适用于希望在 Java 应用中实现 MQTT 通信与设备控制的开发者。

eee77的博客 160

JavaScript-什么是作用域,作用域和作用域链,js没有块级作用域

作用域概述 在任何编程语言中都有作用域的概念,简单来说,所谓的作用域就是变量可作用的范围(可被访问到的区域) 在 JavaScript 中有两种作用域类型,一种是全局作用域另一种是局部作用域 想要理解作用域就必须要理解全局变量和局部变量 全局变量 在网页的所有脚本和函数都能够访问到的变量就是全局变量 如何定义全局变量: 在函数外部定义的变量,就是 全局变量 在函数内部,省略关键字 var ...

weixin_44486539的博客 301

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

javascript作用域有几种,js 作用域、作用域链

和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域,例如下列代码中的blogName和函数innerSay都只拥有局部作用域。let/const 声明并不会被提升到当前代码块的顶部,因此你需要手动将 let/const 声明放置到顶部,以便让变量在整个代码块内部可用。在JavaScript中,作用域为可访问变量,对象,函数的集合,它分为局部作用域和全局作用域。块级作用域所声明的变量在指定块的作用域外无法被访问。

阿发狗伪原创 132

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Js】JavaScript作用域

JavaScript作用域 1. 什么是作用域 作用域是代码中的某些特定部分中变量,函数和对象的可访问性。 换句话说,作用域决定了代码区块中变量和其他资源的生命周期和可见性。变量在作用域之外是不可见的。 JavaScript 的作用域包括: 全局作用域 模块作用域 函数作用域 块作用域 词法作用域 2. 全局作用域 在任何函数、块或模块范围之外定义的变量具有全局作用域。具有全局作用域的变量可以在程序的任意位置访问。 创建全局作用域, 这里分两种情况来说: 一种是在具有模块系统的情况

m0_57135756的博客 307

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【JavaScript】js中说说你对作用域链的理解

引擎会尝试在当前作用域下去寻找该变量,如果没找到,再到它的上层作用域寻找,以此类推直到找到该变量或是已经到了全局作用域。可见上述代码中在函数内部声明的变量或函数,在函数外部是无法访问的,这说明在函数内部定义的变量或者方法只是函数作用域。任何不在函数中或是大括号中声明的变量,都是在全局作用域下,全局作用域下声明的变量可以在程序的任意位置访问。把作用域比喻成一个建筑,这份建筑代表程序中的嵌套作用域链,第一层代表当前的执行作用域,顶层代表全局作用域。变量,当我们在全局访问这个变量的时候,系统会报错。

一个前端开发者 298

【JavaScript】JS中变量的作用域

前几天在项目开发过程中发现两个if语句当中定义相同的变量,居然会相互影响。代码大概如下所示: if (1 == 1){ var obj = {name: "hello"}; $("body").click(function () { alert(obj.name) }) } if (2 == 2){ var obj = {name: "Hi"} } 点击事件触发后,发现输出的是Hi。我当时就考虑到应该和JS变量的作用域有关,所以就去学习了一下,并写下

心生的小鱼专栏 847

JavaScript Js作用域精解。什么是Js作用域,有什么用?

文章目录详解作用域与作用域链1 JS代码执行步骤2 JS预编译2.1 AO对象2.2 GO对象2.3 [[scope]]作用域2.4 scope chain作用域链3 函数执行时作用域及数据变化3.1 第一步:定义外层函数a3.2 第二步:执行函数a3.3 第三步:定义内层函数b3.4 第四步:执行函数b3.5 解析:函数执行前后的AO、GO变化闭包1 闭包定义2 闭包的主要作用3 闭包应用4 缺点4 缺点 详解作用域与作用域链 友情链接渡一教育 首先,再要搞明白什么是作用域什么是作用域链之前,先要明白几

SillyBoy的博客 311

JS - 关于改变Javascript的作用域链

关于Javascript静态作用域的一些心得。 之前在看JS大牛BYVoid的>时, 学习到了最能说明Javascript静态作用域特性的代码, 如下: var scope = "global"; function f1() { console.log(scope); } f1() // output: global function f2() { scope = "f2"

evan2916的专栏 2304

js--高级JavaScript之作用域

前言 前面的博客基本上已经将JavaScript的基础知识介绍完毕,现在开始总结一些更高端一点的JavaScript技术。这篇博客就从作用域、作用域链这方面来介绍。 内容 所谓作用域就是指代码有效的区域 常常使用某些设计模式起到封装作用,因为变量容易被替换,所以我们的js代码就不安全,在我们实际使用的时候,应该杜绝使用全局变量,这个时候就用到了设计模式,大家统称沙箱模式 Ja...

罗俊 324

php js函数作用域,javascript 作用域详解

作用域理解:定义的变量、函数生效的范围。javascript 有全局作用域和函数作用域两种。注:es6实现let 块级作用域不是js原生的,底层同样是通过var实现的。如果想了解具体细节,请访问babel官方 对es6中let 进行解析。执行上下文范围:一段内或者一个函数内;全局:函数声明、变量声明 。范围:;函数:函数声明、变量声明、this、arguments。范围:一个函数内部;函数、变量声...

weixin_31572321的博客 185

html js什么作用域,什么是javascript的作用域链?

JavaScript里一切都是对象,包括函数。函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性。其中一个内部属性是作用域,包含了函数被创建的作用域中对象的集合,称为函数的作用域链。作用域:作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。可以说,变量和函数在什么时候可以用,什么时候被摧毁,这都与作用域有关。JavaSc...

weixin_39958100的博客 156

前端基础-JavaScript作用域与JS代码的运行

第8章 作用域与JS代码的运行 * 作用域:变量可以起作用的范围和区域 8.1 全局变量和局部变量 * 全局变量与全局作用域 在任何地方都可以访问到的变量就是全局变量,全局变量所在的区域就是全局作用域 局部变量 只在固定的代码片段内可访问到的变量,最常见的例如函数内部的变量,就是局部变量。局部变量所在的区域就是局部作用域(函数作用域) 不使用var声明的变量是全局变量,不推荐使用。...

逍遥云恋 569

JavaScript作用域与闭包

一、作用域 二、闭包

qq_48113035的博客 3378

JS----JavaScript中的作用域和作用域链

作用域(Scope) 1.什么是作用域 作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。 作用域(scope):一个变量的可用范围 作用域的类型 Javascript中有三种作用域: 全局作用域; 函数作用域; 块级作用域; 2. 全局作用域 任何不在函数中或是大括号中声明的变量,都是在全局作用域下,全局作用域下声明的变量可以在程序的任意位置访问。 例如: // 全局变量 var greeting = 'Hello World!'; function greet() { cons

bugQueen的博客 260
上一篇: js浅析预解析(es6之前)
下一篇: 深入剖析立即执行函数的执行方式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值