这里是Turnip的博客 Trunip的博客

Turnip的博客

添加时要说明来自博客

当前用户组: 超级管理员

第二篇--js的作用域和查询规则解析

JavaScript中的作用域是词法作用域,即js引擎的查找规则,遵循代码书写时的作用气泡进行逐级查找。

这里简述一下LHS查询和RHS查询,即查询词法作用域内赋值操作的左右。详解左转你不知道的JavaScript知识梳理

下面解释一下词法作用域的逻辑

注意:词法作用域是js引擎查找当前代码片段之前的作用域,请看代码

       console.log(a); //undefined
        var a = 3;

此时输出undefined,变量a变量提升到了console.log()之前,当console.log()执行时进行RHS查询,但此时a的赋值操作还未执行到,a的值还没进入到词法作用域内,故此时RHS查询得不到a的值,会输出undefined。

进而解释,请看代码

       function bar() {
            console.log(a); //3
        }
        var a = 3;
        bar();

bar()在执行时,a的定义和赋值操作均已执行到,此时a已全部进入到词法作用域,故当函数调用,并执行函数内部的console.log()时,js引擎在其内部进行RHS查询得到了a的值。

总结:词法作用域就是js引擎在代码逐行编译是各代码词法产生的作用域,故随着代码的编译作用域内部逐渐放大