重识 JavaScript —— 作用域(二)

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

Javascript 语言特有的”链式作用域”结构(chain scope)

即子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。

块作用域与函数作用域

函数可以访问函数外部申明的变量,但是函数外部不能反过来访问函数内部的局部变量。

需要注意的是在 JavaScript 中,区域块(if 、for、while、switch、try)内的变量是可以在区域块外部访问的。

try {
    var value1 = "from try block"
}catch(e) {

}

if(true) {
    var value2 = "from block";
}

var f3 = function() {
    var value3 = "from function";
}
console.log("value1: " + value1); // value1: from try block
console.log("value2: " + value2); // value2: from block
console.log("value3: " + value3); // Uncaught ReferenceError: value3 is not defined

不要忽略 var

Yes,don’t ignore var

不知道你刚开始写 JS 程序会不会在申明变量时忘掉写 var ,反正最初的我是觉得写和不写没差而不写 var

在申明变量不写 var 的时候会申明一个全局变量。而在 HTML 文档中,所有全局变量都属于 window 对象中。

也就是说你的全局变量,或者函数,可以覆盖 window 对象的变量或者函数。
局部变量,包括 window 对象可以覆盖全局变量和函数。

foo = "hello";

console.log(window.foo == foo); // true;

// 实时证明当 JavaScript 运行在浏览器中时,全局变量会作为 window 对象的属性

// location = "https://baidu.com"; // 全局变量 location 会让浏览器跳转至该链接

需要补充说明的是在最外层的 <script></script> 中就算你使用 var 来声明变量和函数,这个成员也会归为 window 对象“所有”。对于这个现象我的理解是:最外层相当于是我们的最大的一个作用域,所以无论你怎么申明都会成为 window 的成员。

一图胜千言

这里写图片描述

这里的全局作用域是直接在 <script></script> 里、即 v1 、v2 的值会在 window 对象下,内层作用域可以访问外层的作用域,但是内层作用域里的值会被围墙围起来不让外层作用域访问。

疑问?

在 JS 里,我们有没有方法打破常规,在外层作用域访问内层作用域的值呢?

详细解读文字识别工具———Tesseract-OCR    在尝试破解12306验证码的时候,提前了解了一下应对各种验证码的解决方案,这里主要是学习到了面对文字图片验证码,例如亚马逊、豆瓣等平台的登录时会遇到的情况,效果还不错。 一、工具介绍 ​    Tesseract-OCR 是一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition... 阅读详情

相关推荐

CST微波工作室端口设置保姆级教程:从波导端口到离散端口,手把手教你搞定S参数仿真

本文提供CST微波工作室端口设置的详细教程,涵盖波导端口和离散端口的选择与配置,助力工程师精准完成S参数仿真。通过微带线滤波器案例,详解端口尺寸、阻抗设置及常见问题排查,提升仿真效率与准确性。

weixin_42570296的博客 362

JavaScript(JS) array.concat(value1, value2, ..., valueN)

Array对象允许在一个变量中存储多个值。它存储相同类型元素的固定大小的顺序集合。数组用于存储数据集合,但将数组看作同一类型变量的集合通常更有用。本文主要介绍JavaScript(JS) array.concat(value1, value2, ..., valueN) 方法。 原文地址:JavaScript(JS) array.concat(value1, value2, ..., valueN) ...

m0_60105488的博客 244

MPU6050芯片 寄存器详解与配置指南(详解)

分频值越小,数据刷新越快(如分频值 = 0 时,刷新率 = 8kHz/1=8kHz)。功能:配置采样频率分频系数,控制 ADC 转换速度和数据刷新率。数据刷新率 = 陀螺仪输出时钟频率 /(1 + 分频值)

m0_74696257的博客 1421

JavaScript作用域之我见

我相信很多C系语言的学习者和使用者,在学习和使用javascript的时候,总会被其变量作用域迷惑一下, 我觉得这是很正常的,因为他确实跟c和java等不太一样变量作用域的概念 在程序设计中,变量的可访问性和生命周期都是有一定范围的,而这一定范围就是变量的作用域,也就是说,作用域控制着变量的可访问性和生命周期JavaScript中没有块级作用域,只有函数作用域 Java:class Person

静夜思 798

医疗影像技术实战:如何用Python快速生成DRR图像(附完整代码)

本文详细介绍了如何使用Python实现数字重建放射影像的快速生成。通过实战代码,从基础光线投射算法到性能优化,逐步讲解DRR图像生成的核心原理与工程实践,帮助开发者掌握医疗影像处理的关键技术,赋能放射治疗规划与图像引导手术等临床工具开发。

k8l9m0n的博客 72

企业微信消息推送API实战:5步搞定可信IP与域名配置(含Python代码示例)

本文详细解析了企业微信消息推送API实战中的关键配置步骤,特别是可信IP与可信域名的配置流程。通过5个清晰步骤,结合Python代码示例,指导开发者快速完成安全通信链路搭建,避免常见错误,确保消息推送服务稳定可靠。

qsc9012345的博客 996

JS复习整理1_基础与常识

1.六种数据类型 5种基础的:Undefined,Null,Boolean,Number,String(其中Undefined派生自Null) 1种复杂的:Object(本质是一组无序键值对) 2.字符串转数字 Number(str):先求值再转换(先valueOf再toString都不行就是NaN),一般与我们的预期结果不一样,比如Number(”)=Number(false)=Number(null)=0而var x;Number(x)=NaN。。。所以一般都用下面两种方式 parseInt(str):

weixin_42583552的博客 239

Python自动化:3分钟搞定微信收藏链接批量导出到TXT(附完整代码)

本文介绍如何使用Python自动化工具在3分钟内将微信收藏链接批量导出到TXT文件。通过模拟人类操作和OCR技术,脚本高效处理大量链接,显著提升工作效率,并附有完整代码和实战避坑指南。

weixin_29062671的博客 630

JavaScript(二)

JS交互

snowyfly的博客 369

国民技术N32G45X SysTick定时器实战:从1us到100ms的精准延迟实现(附完整代码)

本文详细解析了国民技术N32G45X芯片中SysTick定时器的工作原理,并提供了从1微秒到100毫秒的高精度延迟实现方案。通过对比官方库函数的局限性,文章重点介绍了无中断查询模式、时钟源选择策略以及完整的代码实现,帮助嵌入式开发者精准控制时序,适用于LED控制、软件模拟通信协议等多种实战场景。

weixin_29190573的博客 376

2026年5月典型AI应用落地

2026年5月AI应用全面进入商用化阶段,呈现三大特征:产业端深度渗透核心业务场景,如法律领域AI合同处理系统完成8500万元项目;消费端实现规模普及,京东618全场景AI化,智能家居产品涌现;基础设施层面运营商推出词元套餐降低使用门槛。政策法规与国际合作同步推进,日本通过首部AI专项法律,中国举办多场产业对接会。AI应用从技术验证转向实效产出,进入精算回报的成熟期。

AI_Encyc的博客 2632

js 代码优化点

尽量不要操作dom元素, 使用使用逻辑短路替换三元运算符 var value=true; value?value=2:'' value && value=2 使用对象属性替换if-else // if版本 if (a == 1) { return 'one'; } else if (a == 2) { return 'two'; } else if (a == 3) { return 'three'; } else { return ...

想飞的猪的博客 408

华为od 面试八股文_测试/测试开发_05_含答案

华为od 面试八股文_测试/测试开发_05_含答案

MISAYAONE的博客 2558

JavaScript作用域详解

作用域是JavaScript中一个重要的概念,它决定了变量和函数在代码中的可访问性和可见性。了解JavaScript的作用域对于编写高效、可维护的代码至关重要。本文将深入介绍JavaScript作用域的不同类型、作用域链以及闭包等相关内容。

00后|互联网💻|办公室🍵茶农,希望通过技术改变生活|爱折腾💪|收集各类📚网络资源,好物不私藏,点点关注,不迷路。 全网搜:阿宇的编程之旅 or 阿宇的宝库 2726

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

JavaScript作用域

作用域通常用来限制变量/函数的使用范围并规定JS引擎如何去寻找所要使用的变量例如:如果不对变量的使用范围进行限制,那么在上面程序执行时,打印的结果应该分别是什么?如何保证程序的执行结果是我们想要的结果?这就是为什么要创建作用域作用域会像一个盒子一样保存在其中定义的变量/函数,当JS引擎需要使用某个变量/函数,会优先在当前作用中进行寻找,如果当前作用域中不存在所需的变量/函数时,JS引擎会向外层作用域寻找该变量/函数但是这又出现了一个问题,如何确定外层作用域是哪一个作用域,作用域之间的关系是如何确定的。

优快云_Random_Name的博客 1350

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

前端js入门——JavaScript 作用域

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

fenghulun的博客 7403

JavaScript 作用域全面总结

本文章详细讲解了javascript中关于作用域的详细知识点解剖,详细的讲解了各种作用域

x15514104477的博客 1874

js的函数作用域跟块级作用域

一,js中的作用域     js中除了全局作用域,还有函数作用域。     嗯,还有块级作用域。 二,函数作用域跟块级作用域的区别     当将代码看成一个IIFE时,全局作用域其实就是一个函数作用域。     那么函数作用域跟块级作用域的区别是什么呢?           函数作用域:变量在定义的函数内及嵌套的子函数内处处可见;           块级函数域:变量在离开定义的块级

huangjq36SYSU的博客 1万+

JavaScript作用域与闭包

一、作用域 二、闭包

qq_48113035的博客 3378

重识JavaScript代码如何执行(闭包,作用域,this指向)

JavaScript代码如何执行,我们应该都会大概有些了解,V8引擎,单线程,回调队列,除此之外,一些基本的需要掌握有执行环境、词法环境、作用域、执行上下文、闭包等内容。其实很多时候,我们大致都知道是怎么个回事,可有很难把这些区分清楚,分别如何去描述。 JavaScript 代码运行的各个阶段 JavaScript 是弱类型语言,在运行时才能确定变量类型。即使是如今流行的 TypeScript,也只是增加了编译时(编译成 JavaScript)的类型检测(对于编译器相信大家都有所了解,代码编译过程中编译器会

flym_的博客 321

JavaScript 作用域与作用域链

作用域链是JS引擎实现变量访问的核心机制,其本质是: 由函数定义时的词法作用域决定的“变量查找链路”; 遵循“向上查找、内层遮蔽外层”的规则; 是闭包、模块化等高级特性的底层支撑。 理解作用域链,能帮助我们更清晰地分析变量的可见性、避免命名冲突,并掌握闭包等进阶概念。

chanyeol14805的博客 1068

JavaScript中的作用域是什么以及有哪些类型的作用域

如果JavaScript支持动态作用域,那么函数内的变量查找将是基于函数调用的栈帧,而不是函数定义的位置。幸运的是,JavaScript采用的是词法作用域,这使得代码更加可预测和易于理解。这使得我们可以预测函数的行为,因为它的行为取决于定义时的上下文,而非运行时的上下文。除了上述的基本作用域外,随着ES6标准的引入,JavaScript增加了块级作用域的概念,进一步丰富了作用域的类型。函数作用域是最经典的作用域形式,它指的是函数内部创建的变量只在该函数内有效。与函数作用域不同的是,块级作用域内的变量使用。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1399

JavaScript中的作用域及作用域链

一、作用域 概念:变量和函数的可访问范围,控制着变量和函数的可见性与生命周期变量的作用范围 1、全局作用域(全局变量):在函数外部定义的变量或在函数内部没有使用var声明的变量。在浏览器页面没有关闭之前一直占用内存空间。比较耗费内存。在浏览器页面关闭时才释放内存 2、局部作用域(局部变量):在函数内部用var关键字定义的变量。只在函数内部起作用,函数调用结束后,局部变量所占的内存就会被释放。 var a=3; //全局变量 function fn(b){ //局部变量 .

m0_46420078的博客 2817

js作用域详解

作用域详解 一. 了解作用域 二. 作用域分类 三. 作用域的上下级关系 四. 作用域的三大规则 一. 了解作用域 在介绍作用域的定义之前,先解释一下”作用”和”域”的含义 作用:指生效,可以使用 域:范围 总结来说,就是一个变量可以生效的范围。变量不是在所有地方都可以使用的,而这个变量的使用范围就是作用域 二. 作用域分类 1.全局作用域 一个 html 页面就是一个全局作用域,打开页面的时候, 作用域就生成了, 直到关闭页面为止 2.局部作用域(私有作用域)

tx_blogs的博客 3115

JS 作用域及作用域链

JS 作用域及作用域链 一、作用域   在 Javascript 中,作用域分为全局作用域和函数作用域   全局作用域:     代码在程序的任何地方都能被访问,window 对象的内置属性都拥有全局作用域。   函数作用域:     在固定的代码片段才能被访问      例子:          作用域有上下级关系,上下级关系的确定就看函数是在哪个作用域下创建的。如上,fn作用域下创建了bar函数,那么“fn作用域”就是“bar作用域”的上级。     作用域最大的用处就是隔...

cxu123321的博客 1844

JavaScript---变量作用域

也就是在函数内部声明的变量,在函数外部无法访问,在函数内部,该变量都可以被访问。类似,在块级作用域内声明的常量,仅在该块级作用域内可访问。如果内联 JavaScript 代码创建了新的变量,这些变量会成为。在同一函数内部的顶部声明,那么三者具备相同的作用域”循环等)内声明的变量,仅在该块级作用域内可访问。”,它允许在变量声明之前就使用该变量。,这意味着在块级作用域(如。具备不同的作用域,但它们都。甚至在声明之前也可访问(声明常量,就必须同时进行。

zheshiyangyang的博客 1328
上一篇: 重识 JavaScript —— 方法的重载(一)
下一篇: 重识 JavaScript —— 闭包(三)
xiaoping0915
博客等级 码龄12年 158粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值