Javascript 作用域

作用域是JavaScript中一个较难处理的特性。所有面向对象的编程语言都有某种形式的作用域;这要看是什么上下文约束着作用域。在JavaScript里,作用域由函数约束,而不由块约束(如while,if,和for里的语句体)。最终可能使得一些代码的运行结果表面上显得怪异(如果你来自一种块作用域语言的话)。程序2-10的例子说明了“函数作用域代码”的含义。
  代码2-10. JavaScript中变量作用域是怎样工作的例子


//设置一个等于"test"的全局变量foo
var foo = "test";

//在if块中
if ( true ) {
    //设置foo为"new test"
    //注意:这仍然是在全局作用域中
    var foo = "new test";
}

//正如我们在此处可见,foo现在等于"new test"
alert( foo == "new test" );

//创建一个修改变量foo的函数
function test() {
    var foo = "old test";
}

//调用时,foo却驻留在是在函数的作用域里面
test();

//确认一下,foo的值仍然是"new test"
alert( foo == "new test" );

  在程序2-10中你会发现,变量位于在全局作用域。基于浏览器的JavaScript有趣的一面是,所有的全局变量实际上都是window对象的属性。尽管一些老版本的Opera浏览器或Safari浏览器不是这样,假定浏览器这样工作通常是一个很好的经验规则。程序2-11展示了一个这种例子。
  
  程序2-11. JavaScript的全局变量与window对象的例子


//全局变量,包含字符串"test"
var test = "test";

//你会发现,我们的全局变量和window的test属性是相同的
alert( window.test == test );

  最后,让我们来看看当一个变量漏定义时会怎样。程序2-12里,变量foo在test()的作用域里被赋值。但是,程序2-12里实际并没有(用var foo)定义变量的作用域。当变量foo没有明确定义时,它将成为全局变量,即使它只在函数的上下文使用。

  程序2-12. 隐式全局变量声明的示例


//一个为变量foo赋值的函数
function test() {
    foo = "test";
}

//调用函数为foo赋值
test();

//我们发现foo现在是全局变量了
alert( window.foo == "test" );

  到目前应该很明显,尽管JavaScript的作用域不如块作用域语言的严格,它还是相当强大和有特色的。尤其是与下节中叙述的闭包的概念结合起来时,JavaScript语言的强大将展露无遗。


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/qij2256/archive/2007/05/01/1593993.aspx

我转优快云的没事吧。。。

基于 PID 算法的 STM32 步进电机高精度位置控制系统设计与实现(工业自动化应用) 硬件层面:选用 STM32F103C8T6+A4988 + 欧姆龙编码器的组合,兼顾工业可靠性与成本,接线需注意强弱电分离和信号抗干扰;软件层面:核心为位置式 PID 闭环控制,Mermaid 流程图清晰展现 “采集 - 运算 - 驱动” 的闭环逻辑,代码模块化易移植;性能层面:无负载定位误差≤±1 脉冲,带载误差≤±3 脉冲,满足工业自动化高精度位置控制需求。 阅读详情

相关推荐

LaTeX双栏浮动结构实战:用dblfloatfix解决跨栏图表排版难题

本文深入探讨了LaTeX双栏浮动结构在学术论文排版中的常见问题,特别是IEEE会议论文中的跨栏图表定位难题。通过介绍dblfloatfix包的整合解决方案,帮助用户实现精准的底部定位和浮动顺序保持,提升排版效率与质量。

weixin_30872499的博客 443

JS 函数作用域

前些日子,我专门去看了箭头函数,但是阮一峰作者中的箭头函数文章里有写到这样一句话: “在定义对象方法的时候不适合使用箭头函数,因为对象不构成单独的作用域”,作者的原代码如下: const cat = { lives:9, jumps:() => { this.lives--; } } // 原作者解释:cat.jumps()方法是一个箭头函数,这是错误的。调用cat.jumps(),如果是普通函数,该方法内部的this指向cat;如果携程上面那样的箭头函数

weixin_51780751的博客 368

ESP32-S3 + TB6600驱动42步进电机:从基础接线到AccelStepper库平滑加减速实战

本文详细介绍了如何使用ESP32-S3开发板和TB6600驱动器控制42步进电机,从基础接线到利用AccelStepper库实现平滑加减速控制。内容涵盖硬件连接、基础驱动代码、AccelStepper库的安装与参数调优,以及高级技巧与故障排除,帮助创客实现工业级精准控制。

weixin_42632434的博客 284

面向对象的 Javascript 作用域

作用域是JavaScript中一个较难处理的特性。所有面向对象的编程语言都有某种形式的作用域;这要看是什么上下文约束着作用域。在JavaScript里,作用域由函数约束,而不由块约束(如while,if,和for里的语句体)。最终可能使得一些代码的运行结果表面上显得怪异(如果你来自一种块作用域语言的话)。程序2-10的例子说明了“函数作用域代码”的含义。  代码2-10. JavaScript

应天.Net BLOG 1331

基于Multisim设计电子密码锁

一、设计任务与要求:(可软件仿真实现)1)基本要求:设计一个数字密码锁,要求只有按正确的顺序,输入正确的密码,方能输出开锁信号,实现开锁。设置三个正确的密码键和若干个伪键,任何伪键按下后,密码锁都无法打开。每次只能接受四次按键信号,而且第四个键只能是“确定”或者“重输键”,其他无效。能显示已输入键的个数2)扩展要求:第一次密码输错后,可以输入第二次,但是连续三次输错,密码将被锁,必须按复位键才能解锁。

ablinger的博客 4418

uni-app蓝牙MTU设置失效探因:从20字节限制到跨设备兼容性实战

本文深入探讨了uni-app蓝牙开发中MTU设置失效的常见问题,特别是20字节限制的成因及解决方案。通过分析设备兼容性、蓝牙协议栈特性和系统版本差异,提供了智能延迟策略、设备特征检测和渐进式MTU提升等实战方案,帮助开发者优化蓝牙数据传输效率。

weixin_29289821的博客 289

【js】this作用域全解析

this作用域问题 一般来说,谁调指谁是一个基本原则,但是这并不是一个非常好的面试回答,虽然从某种程度上,这有助于帮我们判断this指向问题,但是不能涵盖所有的情况,建议从函数调用的4种方式展开 函数式调用 方法调用模式 构造函数调用模式(this指向实例) call、apply、bind 函数式调用 var age = 10 var person = { age:12, say(){...

bye_cherry的博客 1465

暗黑破坏神2重制版 mod制作教程(一)

暗黑2重制版mod修改教程

hhhh2312的博客 7458

彻底理解作用域、闭包和this

搞定作用域、闭包和this作用域闭包this新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 作用域 可以理解为是一个对象包含了当前执行环境的信息。当查找变量的时候,会先从当前作用域对象中查找,如果没有找到,就会去父级查找,

幼儿园老大的博客 566

Wi-Fi QoS中AIFSN/CWmin/CWmax/TxOP参数是怎样计算的?

802.11e/WMM的EDCA机制通过AIFS、CWmin/CWmax和TxOP三组参数实现业务优先级控制。AIFS决定最短等待时间(AIFS=SIFS+AIFSN×SlotTime),CWmin/CWmax定义退避范围(2^ECW-1),TxOP设置最大占用时长(32µs单位)。默认配置中,语音业务(VO)优先级最高,其AIFSN最小(2)、CW范围最小(3-7)、TxOP适中(1.504ms);视频(VI)次之;普通数据(BE)和后台(BK)优先级最低。调优需根据网络特性调整参数:VoIP可降低AIF

1042484520@qq.com(邮箱) 1747

国债期货的日线趋势跟踪策略实现(基于backtrader框架)

通过backtrader框架,我们可以轻松地实现国债期货的日线趋势跟踪策略,并进行回测和验证。通过这种策略,我们可以尝试捕捉国债期货价格的短期趋势,并根据趋势的方向进行交易决策。backtrader提供了许多内置的指标、订单类型和其他功能,可以帮助你进一步优化和改进你的策略。它提供了丰富的工具和功能,使我们能够快速实现和验证我们的交易想法。方法中,我们根据当前价格和前一天的价格判断趋势的方向,并根据趋势的变化进行买入或卖出操作。然后,我们设置了初始资金和交易手续费,并将我们定义的策略。来跟踪每日的收盘价。

NisyPhilosophy的博客 404

js 中的 this 指向问题(作用域问题)

箭头函数: 1、箭头函数是没有this的,this是继承来的 2、箭头函数的this来源于声明的环境,就是说从声明环境中寻找this,如没有找到那就是window对象 3、因为箭头函数没有this,而是从声明环境(向上)寻找,所以也就不存在arguments、super、new.target变量 4、由于箭头函数没有自己的this,所以当然也就不能用call()、apply()、bind(...

lwx931449660的博客 1353

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

前端js入门——JavaScript 作用域

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

fenghulun的博客 7403

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SAP B1中文培訓教材_SDK

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

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

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

weixin_44486539的博客 301

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

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

阿发狗伪原创 132

【Js】JavaScript作用域

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

m0_57135756的博客 307

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

【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

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

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

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

bugQueen的博客 260

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

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

逍遥云恋 569

JavaScript作用域与闭包

一、作用域 二、闭包

qq_48113035的博客 3378

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

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

weixin_39958100的博客 156
上一篇: HTML状态表示
下一篇: 表单布局 tableLayout与columnLayout 及文本框跨列
fireinjava
博客等级 码龄20年 5粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值