当前位置: 首页 > 编程日记 > 正文

JS作用域相关知识(#精)

在学习《你不知道的JS》一书中,特将作用域相关知识在此分享一下:

#说到作用域,就不得不提到LHS查询和RHS查询:

1)如果查询目的是对变量进行赋值,则使用LHS查询

2)如果查询目的是获取变量的值,则使用RHS查询

作用域的查询都会从当前执行的作用域开始查找,如果没有找到所需要的标识符,就会向上级作用域继续查找,直到抵达全局作用域为止

# 当进行RHS查询时无法找到该变量,引擎则会抛出ReferenceError的异常

代码示例如下:

        function foo(a){
            console.log(a+b);
            b = a;
        }
        foo(2);

在此代码示例中未声明b变量,因此RHS查询时无法找到它,则抛出ReferenceError异常

#当RHS查询时找到了变量,但试图对一个非函数类型的值进行函数调用,或者引用null或undefined类型的值中的属性,则引擎会抛出另一种异常:TypeError

在作用域查找中还有非常重要的一点: "遮蔽效应"

作用域查找会在找到第一个匹配的标识符时停止,在多层嵌套作用域中可以定义同名的标识符,叫做'遮蔽效应'

代码示例如下:

        var b = 4;function foo(a){var b = 3;console.log(a+b);}foo(2);//5

这里由于作用域查找中具有遮蔽效应,引擎会先找到执行作用域中的 var b = 3,将执行作用域名之外的 var b = 4遮蔽,因此即便外面也用的是相同的变量b作为标识符,也并不影响函数的执行

那么如何来访问那些被同名变量所遮蔽的全局变量呢,在这里,我们可以引入window.a的技术;

注意:通过这种技术可以访问那些被遮蔽的全局变量,但非全局的变量被遮蔽则无论如何都无法被访问

转载于:https://www.cnblogs.com/wccc/p/6698747.html

相关文章:

RUP within the context of the Six Best Practices

前面几期图文介绍了软件工程中常见的问题,以及找到它们的根本原因,提出了在软件工程实践中总结出来的六个最佳工程实践。迭代化开发、需求管理、基于构件的体系结构、可视化建模、持续的质量验证、变更管理。今天我们介绍Rational公司的RUP,看…

排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...

先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎不大相同,不知是因为java的缘故还是因为我算法的缘故,欢迎拍砖。 复习排序&#xf…

项目存档管理规范

项目存档管理规范 在我们开发过很多个项目之后,每个项目都会累积下很多源码、文档等,查找和整理起来很不方便,如果我们又要同时工作于多个项目的话,情况会更糟。所以对每个项目的各种档案进行有效管理很有必要,从公司层…

review what i studied `date` - 2017-4-12

python 连接字符串 int srt >>> a 1 >>> b xuhui >>> a b Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for : int and str >>> b str(a)…

StaticFactoryMethod_Level1

以下代码是“简单工厂模式”的第一个例子&#xff1a;

逃离深圳,一个程序员的选择

到新公司上班也已经一个多月了&#xff0c;上周刚刚交了首付&#xff0c;总价50多万&#xff0c;97个平方的房子还外送8个平方。为了不忘记这次的选择&#xff0c;也为了记录这次选择的过程&#xff0c;特撰文如下。 自从得知老婆怀孕后&#xff0c;那是相当高兴&#xff0c;但…

弹出窗口(对话框)

对话框分为三种&#xff1a;window.open方法 无模式对话框 有模式对话框 第一&#xff1a;OPEN方法 <script>functionopen_cate(){ window.open("OpenUp.aspx","","toolbar0,location0,directories0,status0, menubar0,scr…

隐藏系统保留区

为了下午的装机活动自己就安了一个老毛桃&#xff0c;制作启动盘完毕后发现电脑中的“系统保留”盘出来了&#xff0c;为什么会出现这个盘呢&#xff1f; 当笔记本安装Windows7系统时会自己主动产生一个几百兆的系统保留分区。里面保存着系统/磁盘引导的数据。有些笔记本在出厂…

StaticFactoryMethod_Level2

以下代码是“简单工厂模式”的第二个例子&#xff1a;

06- web兼容性测试

稍后更新。。转载于:https://www.cnblogs.com/Chamberlain/p/11064664.html

話說我們家姚明

已經讀三年級了,成績不錯,有目共睹!最近三場比賽連續三次得分在30分以上...呵呵~在NBA那個高手如雲的地方如此出色! ^_^#好強~ 真的好強!!麥迪那個軟蛋,干脆把他賣掉得了!拿高工資不做事的人.. 凸-_-转载于:https://www.cnblogs.com/tohen/archive/2006/03/09/346286.html

20145240《网络对抗》MSF基础应用

MSF基础应用 一个主动攻击&#xff0c;如ms08_067 启动msfsearch ms08_067&#xff0c;查找相应的漏洞&#xff0c;查询可攻击的模块。根据上述漏洞的模块use exploit/windows/smb/ms08_067_netapi选择该模块接下来查看相应的攻击载荷&#xff0c;首先我们可以查看可使用的载荷…

StaticFactoryMethod_Level3

以下代码是“简单工厂模式”的第三个例子&#xff1a;

Dynamics CRM 导入用户数据错误 could not retrieve salesperson role

在CRM中通过导入数据的方式创建用户时报下图中的错误&#xff0c;“could not retrieve saleperson role”。原因是系统中的自带的salesperson安全角色被删除了&#xff0c;在用导入数据的方式导入文档新建用户时是没有安全角色让你选择的&#xff0c;系统默认给分派了销售员的…

也许这样叫做成熟

早上想坐早班车来接三日游回来的佳&#xff0c;不料还是比旅游团的车晚一步&#xff0c;不过今天到……小结&#xff1a;1、做事&#xff0c;大事不糊涂&#xff0c;小事灵活受理&#xff1b;2、目标明确&#xff0c;善始善终&#xff1b;3、卧薪尝胆&#xff0c;体味时间的诅咒…

写文章 TEE技术分析【转】

转自&#xff1a;https://zhuanlan.zhihu.com/p/24222064 首先介绍一下TEE的主要关键技术&#xff1a; 1&#xff0e;安全启动&#xff08;Secure Boot&#xff09; 安全启动技术可以用于需要防止篡改系统镜像&#xff0c;比如安全系统&#xff0c;安全手机镜像等。 2&#xff…

StaticFactoryMethod_Level4

以下代码是“简单工厂模式”的第四个例子&#xff1a;

jquery 获取Select option 选择的Text和Value

jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关设置 获取一组radio被选中项的值:var item $(input[nameitems][checked]).val();获取select被选中项的文本:var item $("select[nameitems] option[selected]").text(); 获取…

Android -- Annotation(注解)原理详解及常见框架应用

1&#xff0c;我们在上一篇讲到了EventBus源码及3.0版本的简单使用&#xff0c;知道了我们3.0版本是使用注解方式标记事件响应方法的&#xff0c;这里我们就有一个疑问了&#xff0c;为什么在一个方法加上类似于“Subscribe”&#xff0c;就可以让我们的反射找到我们的事件响应…

简单工厂模式(StaticFactoryMethod)

来华北电力大学数理系LSGO软件技术团队学习Coding&#xff0c;我通常第一个就讲“简单工厂模式”&#xff0c;这一讲不仅仅是讲模式&#xff0c;更主要的是让大家体会什么是软件系统的“可复用”、“可扩展”、“易维护”、“灵活性好”&#xff0c;以及如何通过面向对象程序设…

Html,Css,Javascript是什么?

本文属于基础科普文&#xff0c;高富帅们请绕道吧。 Html&#xff0c;css&#xff0c;javascript是做网页前台设计的标准套装&#xff0c;html是一些网页控件&#xff0c;css是美化这些控件的代码&#xff08;层叠样式表&#xff09;&#xff0c;js&#xff08;javascript&…

[转帖]ERP术语

栖息谷-IT管理-[转帖]ERP术语 [转帖]ERP术语 1 英文缩写&#xff1a; MIS 英文全称&#xff1a; Management Information System 中文翻译&#xff1a; 管理信息系统 简释&#xff1a; MIS是指对企业大量的原始管理…

how tomcat works 总结 二

第五章 servlet容器 第 5 章讨论 container 模块。container 指的是 org.apache.catalina.Container 接口&#xff0c;有4 种类型的 container:engine, host, context 和 wrapper。这章提供了两个工作于 context 和wrapper 的程序。容器共分四类,类图例如以下:一个wrapper就是一…

策略模式(Strategy)

这是来数理系LSGO软件技术团队学习Coding&#xff0c;第二个要学习的设计模式。该模式在解决同一个问题时可以使用不同的算法。以满足“开闭原则”&#xff0c;把各种算法与实际业务逻辑解耦合&#xff0c;以便写出良好的代码。

[scrum]2011/9/22-----第二天

scrum 总结&#xff1a; Team member Yesterday’s Work Today’s Work Issue R X Task196:Completed xml 文件的解析&#xff0c;并且通过了两个测试用例 Task198:Completed 添加全局变量&#xff1a;当前会议和remind list Task201&#xff1a;Active 基本完成了select …

千千静听4.6.7版发布了

现在这个版本算是很不错的了&#xff0c;提供了相当完善的播放功能 下载&#xff1a; http://ttplayer.com/ttpsetup.exe 转载于:https://www.cnblogs.com/it201108/archive/2006/04/29/2148385.html

Strategy_Requirement1

以下代码是“策略模式”的第一个例子&#xff1a;

代码解说Android Scroller、VelocityTracker

在编写自己定义滑动控件时经常会用到Android触摸机制和Scroller及VelocityTracker。Android Touch系统简单介绍&#xff08;二&#xff09;:实例具体解释onInterceptTouchEvent与onTouchEvent的调用过程对Android触摸机制须要用到的函数进行了具体的解释。本文主要介绍两个重要…

写给云栖社区在做网站的朋友一点干货

我本人也是从事网站建设及APP开发业务的&#xff0c;工作多年下来&#xff0c;从以前的几百元企业网站&#xff0c;到商城网站&#xff0c;以及一些应用类型的APP开发&#xff0c;亲眼目睹了很多企业&#xff0c;以及很多项目&#xff0c;在应用的过程中&#xff0c;过了1-2年&…

Strategy_Requirement2

以下代码是“策略模式”的第二个例子&#xff1a;