什么是作用域 编译原理 分词/词法分析 这个过程会将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代 码块被称为词法单元(token) 解析/语法分析 这个过程是将词法单元流(数组)转换成一个由元素逐级嵌套所组成的代表了程序语法 结构的树.这个树被称为“抽象语法树”(Abstract Syntax Tree,AST). 什么是抽象树呢?在这个网站上可以在线的看到js源代码,也就是抽象树 在线生成抽象树 代码生成 将 AST 转换为可执行代码的过程被称为代码生成. 对于 JavaS…
作用域和闭包 ・作用域 引擎:从头到尾负责整个JavaScript的编译及执行过程. 编译器:负责语法分析及代码生成等. 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限. 作用域是一套规则,用于确定在何处以及如何查找变量(标识符). 如果查找的目的是对变量进行赋值,那么就会使用LHS查询: 如果目的是获取变量的值,就会使用RHS查询. ・词法作用域 无论函数在哪里被调用,也无论它如何被调用,它的词法作用域都只由…
最近在读一本进阶的JavaScript的书<你不知道的JavaScript(上卷)>,里面分析了很多基础性的概念. 可以更全面深入的理解JavaScript深层面的知识点. 一.函数作用域 1)函数作用域 就是作用域在一个“Function”里,属于这个函数的全部变量都可以在整个函数的范围内使用及复用. function foo(a) { var b = 2; function bar() { // ... } var c = 3; } bar(); // 失败 console.log( a,…
你不知道的Javascript(上卷)这本书在我看来是一本还不错的书籍,这本书用比较简洁的语言来描述Js的那些"坑",在这里写一些博客记录一下笔记以便消化吸收. 1 编译原理 在此书中,开始便提出:Javascript是一门编译型语言,我一开始以为这是国内翻译的锅,翻译的不够准确,后来我还专门去github看了,作者确实是将Js描述为一门编译型语言(compiled language).然而我认为作者更想表达的是Js也拥有和Java一般的特定的编译过程.而不是传统得认为只是单纯的进行&…
github原文 一. 序言 最近我在读一本书:<你不知道的JavaScript>,这书分为上中卷,内容非常丰富,认真细读,能学到非常多JavaScript的知识点,希望广大的前端同胞们,也入手看看这本书,受益匪浅. <你不知道的JavaScript上卷> 现在我读完这本书的一些心得与总结: 一.作用域闭包 先来一段代码: function foo(){ var a = 10; function bar(){ console.log(a); // 10 } bar() } foo(…
在写这篇博客时这本书我已经是看过一遍了,为了加深印象和深入学习于是打算做这系列的前端经典书籍导读博文,大家如果觉得这本书讲的好可以自己买来看看,我是比较喜欢看纸质版书的,因为这样才有读书的那种感觉. 本期我给大家讲述的是     前端经典js书籍   <<你不知道的javaScript(上卷)>> 第一章内容的知识点总结和讲解. 1.1 编译原理 尽管通常将js归类为"动态"或"解释执行"语言,但事实上它是一门编译语言.但与传统的编译语言不同…
原文 一. 序言 最近我在读一本书:<你不知道的JavaScript>,这书分为上中卷,内容非常丰富,认真细读,能学到非常多JavaScript的知识点,希望广大的前端同胞们,也入手看看这本书,受益匪浅. <你不知道的JavaScript上卷> 现在我读完这本书的一些心得与总结: 很多人在做项目时候,遇到bug是我们程序猿最令人头疼的一件事,不过,无论多大多小的bug,都会被我们debug,所以,一切的bug都有原因,只要慢慢静下心来细想想这段代码的流程结构是否正确,哪一步骤出了错…
本篇是<你不知道的JavaScript>的读书笔记 什么是作用域? 程序离不变量,那么变量存储在哪里?程序需要时如何找到他们? 这些问题说明需要一套设计良好的规则来存储变量, 并且之后可以方便地找到这些变量.这套规则被称为作用域. 作用域负责收集并维护由所有声明的标识符(变量) 组成的一系列查询, 并实施一套非常严格的规则, 确定当前执行的代码对这些标识符的访问权限. 作用域嵌套 当一个块或函数嵌套在另一个块或函数中时, 就发生了作用域的嵌套. 因此, 在当前作用域中无法找到某个变量时, 引擎…
JavaScript闭包.是JS开发project师必须深入了解的知识. 3月份自己曾撰写博客<JavaScript闭包>.博客中仅仅是简单阐述了闭包的工作过程和列举了几个演示样例,并没有去刨根问底.将其弄明确. 如今随着对JavaScript更深入的了解,也刚读完<你不知道的JavaScript(上卷)>这本书,所以乘机整理下.从底层和原理上去刨一下. JavaScript并不具有动态作用域,它仅仅有词法作用域. 词法作用域是在写代码或者说定义时确定的.而动态作用域是在运行时确定…
前段时间在每天往返的地铁上抽空将 <你不知道的JavaScript(上卷)>读了一遍,这本书很多部分写的很是精妙,对于接触前端时间不太久的人来说,就好像是叩开了JavaScript的另一扇门,很多内容醍醐灌顶!所以决定将这本书分四个部分整理出来,同时也这本书强烈推荐给正在进阶的小伙伴们.这篇博文主要整理第一部分 作用域. 词法作用域 理解作用域 首先要介绍下JS参与程序 var a = 2的处理过程的演员表: 引擎 从头到尾负责整个JavaScript 程序的编译及执行过程. 编译器 引擎的好…