1、作用域是什么【Javascript(上)】?

130 阅读2分钟

一、作用域是什么

1、什么是【作用域】?

答: 编程代码需要一套设计良好的规则来储存变量,并且之后可以方便地找到这些变量,这套规则被称为“作用域”。 主要用于确定“当前执行代码”对这些变量的“访问权限”。

** 精简: 作用域:是根据名称查找变量的一套规则。**

2、“所有代码”都会经历哪些步骤?

答:“所有代码”都会【先编译,后执行】。

3、“编译”那些事?

  • 【编译】又分为3个步骤:(1)分词/词法分析 (2)解析/语法分析 (3)代码生成

  • 【编译】: 大部分情况下,“编译”发生在代码执行前的几微秒(甚至更短)的时间内。

4、例子(重点看看)

问题: 为什么结果是 undefined ?

console.log(a); // 结果:undefined`

var a = 2;

说明:这段代码会有2个步骤:

  • 步骤一:【先声明】在代码运行前(编译阶段),首先编译器会在当前作用域中“声明一个变量
  • 步骤二:【在赋值】在代码运行时,引擎会在作用域中查找该变量,如果能过找到就会对它赋值

二、作用域的“查找过程”

  • LHS查询:【查询变量,并给变量赋值】
  • RHS查询:【取值】获取某个变量的值 例子:
  • console.log(a) 是 “RHS查询”
  • a = 2 是 “LHS查询”

三、作用域的“嵌套”

1、作用域的“嵌套”是如何形成的?

答:当“一个块或函数”嵌套“在另一个块或函数”中时,就发生了【作用域的嵌套】。

2、作用域链的“查找规则”?(重要)

答: 引擎从【当前作用域】开始查找变量。如果找不到,就向【上一级】继续查找。当抵达【全局作用域】时,无论找到还是没有找到,“查找过程”都会停止。