编译原理 JavaScript事实上是一门编译语言,但与传统的编译语言不同,它不是提前编译的,编译结果也不能在分布式系统中进行移植. 任何JavaScript代码片段在执行前都要进行编译(通常就在执行前). 在传统编译语言的流程中,程序中的一段源代码在执行之前会经历三个步骤,统称为“”编译“”. 1.分词/词法分析(Tokenizing/Lexing) 将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元. 分词(tokenizing)和词法分析(lexing)之…
在写这篇博客时这本书我已经是看过一遍了,为了加深印象和深入学习于是打算做这系列的前端经典书籍导读博文,大家如果觉得这本书讲的好可以自己买来看看,我是比较喜欢看纸质版书的,因为这样才有读书的那种感觉. 本期我给大家讲述的是     前端经典js书籍   <<你不知道的javaScript(上卷)>> 第一章内容的知识点总结和讲解. 1.1 编译原理 尽管通常将js归类为"动态"或"解释执行"语言,但事实上它是一门编译语言.但与传统的编译语言不同…
1调用位置 调用栈:为了到达当前执行位置所调用的所有函数. function baz(){ //当前调用栈:baz //因此,当前调用位置是全局作用域 console.log('baz'); bar(); //bar的调用位置 } function bar(){ //当前调用栈:baz->bar //因此,当前调用位置在baz console.log('bar'); foo(); //foo的调用位置 } function foo(){ //当前调用栈:baz->bar->foo //因…
A quick dip into javascipt The way JavaScript works HTML 用一系列的 markup 来呈现整个 content 的 structure.CSS 用一系列的 rules 来设置网页的 style.JavaScript 通过statement 达到 let you create behaviors 的目的.总结起来,就是 HTML/CSS 用来 create static web pages,而用 JavaScript 来 create dyn…
一.script标签 script标签有6个属性,其中一个废弃,五个可选. 按照传统的写法,<script>的标签都是放在<head>元素中,但是在<head>中包含所有的javascript的文件,也就意味着要在所有的javascript的代码被下载,解析和执行后才能呈现页面的内容. 所以现在的大多推荐把javascript写在</body>的前面.在页面内容呈现完之后再读javascript代码. PS:当然还是写在头部也能实现这个功能,我们要用到scr…
第一章 作用域 1.理解作用域 几个名词的介绍 引擎:从头到尾负责整个JavaScript程序的编译及执行过程 编译器:负责语法分析及代码生成器等脏活累活 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限. 对var a = 2;进行分解,了解引擎等是如何工作. 编译器首先将这段程序分解成词法单元,然后将词法单元解析成一个树结构.但是当编译器开始进行代码生成时,它对这段程序的处理方式会和预期的有所不同. 编译器会…
第一部分 作用域与闭包 第一章 作用域是什么 1.作用域 变量赋值操作会执行两个动作:首先编译器会在当前作用域中声明一个变量(如果之前没有声明过), 然后会在运行时引擎会在作用域中查找该变量,找到就会对他赋值. 2.理解LHS和RHS操作赋值 简单来说  LHS:查找的目的是进行变量赋值,使用LHS查询[存] RHS:目的是获取变量的值,就会用RHS[取] 3.JavaScript编译原理   例如var a=2会被拆分为 var a在其作用域中声名新变量:a = 2会查询变量a并且对它赋值 4…
相关定义 引擎:从头到尾负责整个JavaScript程序的编译及执行过程. 编译器:负责语法分析及代码生成等. 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限. 引擎会调用编译器对源代码进行编译,其中编译器编译过程中遇到变量声明会将其添加到当前作用域中,引擎执行编译过后的代码,遇到变量时会去作用域查找. 总结 当程序中含有var a = 2时,会分为"var a; a = 2;"两个部分:①首先是编译…
第一部分——作用域和闭包 第一章 作用域是什么 1.几乎所有编程语言最基本的功能之一,就是能够储存变量当中的值,并且能在之后对这个值进行访问或修改.事实上,正是这种储存和访问变量的值的能力将状态带给了程序. 2.JavaScript与传统的编译语言不同,它不是提前编译的,编译结果也不能在分布式系统中进行移植. 3.传统编译语言的流程,编译“三个步骤” *分词/词法分析 将由字符组成的字符串分解成(对编程语言来说)有意义的代码块(被称为词法单元 token).例如 var a = 2; 会被分解成…
第1章 作用域是什么 抛出问题:程序中的变量存储在哪里?程序需要时,如何找到它们? 设计 作用域 的目的:为了更好地存储和访问变量. 作用域:根据名称查找变量的一套规则,用于确定在何处以及如何查找变量(标识符). ☞ 编译原理 JavaScript 是一门编译语言,但它不是 提前编译的,编译结果也不能在分布式系统中进行移植. 程序的源代码在执行前的三个步骤,统称为"编译": 分词/词法分析:将字符串分解成代码块(词法单元) 解析/语法分析:将词法单元流(数组)转换成抽象语法树(Abst…