美文网首页
第1章 作用域是什么

第1章 作用域是什么

作者: GaleaWong | 来源:发表于2019-04-06 23:30 被阅读0次
  • 引擎
    负责整个 JavaScript程序 编译及执行过程

  • 编辑器
    负责语法分析及代码生成

  • 作用域

  1. 收集并维护由所有声明的标识符(变量)组成的一系列查询
  2. 实施严格的规则,确定当前代码对标识符的访问权限

编译 —— 源代码执行前的三个步骤

JavaScript 的编译发生在执行前,而不像其他语言在构建之前

1. 分词/词法分析

  • 词法单元: 将 字符组成的字符串 拆解成有意义的代码块(空格是否具有意思,要考虑空格在该语言中是否有意义)
  • 两者判断依据:判断是独一单元还是其他单元的一部分时,是否调用有状态的规则,是 词法分析,否 分词

2. 解析/语法分析

  • 抽象语法树(AST):词法单元流(数组)转换成由元素逐级嵌套所组成的程序语法结构树。
  • Psvar a = 2
    顶级节点: VariableDeclaration
    VariableDeclaration子节点:Identifier(a)
    VariableDeclaration子节点:AssignmentExpression
    AssignmentExpression的子节点:NumericLiteral(2)

3. 代码生成 —— 将 AST 转换成可执行的机器指令

用来创建一个叫做 a 的变量 (包括分配内存等),并将一个值存储在 a

var a = 2

编译器 进行变量声明(如果之前没有声明) 引擎 进行标识符(变量)查询并进行赋值。

作用域嵌套

定义:一块或函数嵌套再另一个块或函数时

引擎查找变量时,若在当前作用域查找不到,变会向上一级作用域进行查找,直至最外层作用域为止(全局作用域)。——“从外查找,不从内”

// 不报错
function foo(a){
  console.log(a+b); 
}  
var b = 2;
foo(2) // 4

// 报错
function foo(){
  var b = 2;
}

console.log(b)  // b is not defined

LHS和RHS

LHS:查找变量本身(容器)
RHS:查找变量的值(源头)

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

foo(2);

非严格模式 下,LHS如果找不到目标变量,会在 全局作用域 下创建一个 b 变量可供 引擎 调用

相关文章

  • JavaScript作用域与作用域链

    一. 作用域 JavaScript作用域是什么? 作用域指的就是变量存在的范围 我们的作用域又分成了全局作用域和...

  • JavaScript 作用域链与闭包

    作用域链与闭包 了解作用域链之前需要先了解下作用域是什么。 作用域 几乎所有的语言都有作用域的概念。这是因为它们都...

  • ES6->块级作用域

    块级作用域 为什么需要块级作用域? ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。第...

  • JS三座大山之作用域和闭包(2)

    作用域 作用域是什么?其实作用域是针对变量的,一个变量在某个区域内起作用,这份区域就是他的作用域。顺便说一句,在 ...

  • 作用域链

    作用域链是什么? 如果要解释作用域链得先知道什么是作用域?什么是闭包? 什么是作用域 用域是一个函数在执行时期的执...

  • Html/CSS 作用域

    作用域是什么:有效的范围 1.ES5 中作用域 在ES5中只有函数有作用域,其他没有作用域的概念。所以当在使用的时...

  • 理解作用域链

    作用域是什么? 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与...

  • 进阶篇:作用域(链)&引用类型 (6)

    饥人谷学习进阶第 6 天 作用域 & 作用域链 作用域:变量与函数的可访问范围(即作用域控制着变量和函数的生命周期...

  • 你不知道的javascript(上券)

    第一部分 第2章 什么是词法作用域?动态作用域?js所采用的作用域模型是哪种?首先什么是作用域,简单来说就是限定一...

  • 作用域链与闭包

    1.作用域链 1.1 作用域链是什么? 作用域链正是内部上下文所有变量对象(包括父变量对象)的列表。首先,代码在其...

网友评论

      本文标题:第1章 作用域是什么

      本文链接:https://www.haomeiwen.com/subject/cdvhiqtx.html