你不知道的JavaScript-1.作用域是什么
2024-10-19 06:21:58
作用域是一套规则,用于确定在何处以及如何查找变量、函数等(标识符)。如果查找的目的是对变量进行赋值,那么就会使用 LHS 查询;如果目的是获取变量的值,就会使用 RHS 查询。
赋值操作符会导致 LHS 查询。 = 操作符或调用函数时传入参数的操作都会导致关联作用域的赋值操作。
JavaScript 引擎首先会在代码执行前对其进行编译,在这个过程中,像 var a = 2 这样的声明会被分解成两个独立的步骤:
- 首先, var a 在其作用域中声明新变量。这会在最开始的阶段,也就是代码执行前进行。
- 接下来, a = 2 会查询(LHS 查询)变量 a 并对其进行赋值。
LHS 和 RHS 查询都会在当前执行作用域中开始,如果有需要(也就是说它们没有找到所需的标识符),就会向上级作用域继续查找目标标识符,这样每次上升一级作用域(一层楼),最后抵达全局作用域(顶层),无论找到或没找到都将停止。
不成功的 RHS 引用会导致抛出 ReferenceError 异常。不成功的 LHS 引用会导致自动隐式地创建一个全局变量(非严格模式下),该变量使用 LHS 引用的目标作为标识符,或者抛出 ReferenceError 异常(严格模式下)。
最新文章
- C# 的TCP Socket (同步方式)
- Windows一些零碎
- ios开发证书
- PowerDesigner 16.5 反向PostgreSQL9.01 中 Unable to list the columns. SQLSTATE = 22003不良的类型值 short : t 解决方法
- Android获取ROOT权限
- Part 10 Stored procedures in sql server
- CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站
- sqlserver 2008 局域网跨服务器T-SQL操作(二)
- 《JS权威指南学习总结--7.9 ES5中的数组方法》
- IOS_FMDB有关字典、数组存储及获取问题
- ASP.Net MVC连接MySQL和Code First的使用
- Apache Hadoop配置Kerberos指南
- UISearchController替换UISearchDisplayController
- 判断客户端是IOS还是Android
- css行内省略号、垂直居中
- nGrinder TestRunnerBarrier.groovy / jihedian
- Codeforces Round #516(Div 2)
- 一天掌握python爬虫
- c++ 对象复制引用时何时调用构造函数、析构函数
- Sublime Text2安装emmet(原名Zen Coding)总结