作用域是一套规则,用于确定在何处以及如何查找变量(标识符)。如果查找的目的是对变量进行赋值,那么就会使用LHS 查询;如果目的是获取变量的值,就会使用RHS 查询。 赋值操作符会导致LHS 查询。=操作符或调用函数时传入参数的操作都会导致关联作用域的赋值操作。 JavaScript 引擎首先会在代码执行前对其进行编译,在这个过程中,像var a = 2 这样的声明会被分解成两个独立的步骤: 1. 首先,var a 在其作用域中声明新变量。这会在最开始的阶段,也就是代码执行前进行。 2. 接下来,a = 2 会查询(LHS 查询)变量a 并对其进行赋值。 LHS 和RHS 查询都会在当前执行作用域中开始,如果有需要(也就是说它们没有找到所需的标识符),就会向上级作用域继续查找目标标识符,这样每次上升一级作用域(一层楼),最后抵达全局作用域(顶层),无论找到或没找到都将停止。 不成功的RHS 引用会导致抛出ReferenceError 异常。不成功的LHS 引用会导致自动隐式地创建一个全局变量(非严格模式下),该变量使用LHS 引用的目标作为标识符,或者抛出ReferenceError 异常(严格模式下)。 小测验答案 function foo(a) { var b = a; return a + b; } var c = foo( 2 ); 1. 找出所有的LHS 查询(这里有3 处!) c = ..;、a = 2(隐式变量分配)、b = .. 2. 找出所有的RHS 查询(这里有4 处!) foo(2..、= a;、a ..、.. b
你不知道的JavaScript(上卷)——1.5 小结
书名: 你不知道的JavaScript(上卷)
作者: [美] Kyle Simpson
出版社: 人民邮电出版社
译者: 赵望野 | 梁 杰 | 梁杰
出版年: 2015-4
页数: 195
定价: 49.00元
装帧: 平装
ISBN: 9787115385734