最近刚刚看完了<你不知道的 JavaScript>上卷,对 JavaScript 有了更进一步的了解. <你不知道的 JavaScript>上卷由两部分组成,第一部分是<作用域和闭包>,第二部分是<this 和对象原型>.下面我会按照简单介绍一下每一章的主要内容及阅读感受. 第一部分<作用域和闭包> 第 1 章 作用域是什么 编译原理:简单介绍分词/词法分析.解析/语法分析.代码生成的概念: 理解作用域:介绍引擎.编译器.作用域之间的关系: 作用…
最近在读一本进阶的JavaScript的书<你不知道的JavaScript(上卷)>,里面分析了很多基础性的概念. 可以更全面深入的理解JavaScript深层面的知识点. 一.函数作用域 1)函数作用域 就是作用域在一个“Function”里,属于这个函数的全部变量都可以在整个函数的范围内使用及复用. function foo(a) { var b = 2; function bar() { // ... } var c = 3; } bar(); // 失败 console.log( a,…
你不知道的JavaScript上卷笔记 前言 You don't know JavaScript是github上一个系列文章   初看到这一标题的时候,感觉怎么老外也搞标题党,用这种冲突性比较强的题目吸引眼球,以致最初真没去看内容.直到出了中文版<你不知道的JavaScript>,一看评价大家都说好,买来一读,内容果然很好,很多地方,让我这个半路转行JavaScript的人豁然开朗.中文版现在出了上卷,中卷应该很快会推出,下卷就要等久一点了 作用域和闭包 作用域是什么 1.现代JavaScri…
本文首发在我的个人博客:http://muyunyun.cn/ <你不知道的JavaScript>系列丛书给出了很多颠覆以往对JavaScript认知的点, 读完上卷,受益匪浅,于是对其精华的知识点进行了梳理. 什么是作用域 作用域是一套规则,用于确定在何处以及如何查找变量. 编译原理 JavaScript是一门编译语言.在传统编译语言的流程中,程序中一段源代码在执行之前会经历三个步骤,统称为"编译". 分词/词法分析 将字符串分解成有意义的代码块,代码块又称词法单元.比如…
JavaScript中的this,刚接触JavaScript时大家都在大肆渲染说其多么多么的灵巧重要,然而自己并不关心:随着自己对JavaScript一步步深入了解,突然恍然大悟,原来它真的很重要!所以,自己花费了大约2周的时间去查贴.翻阅之前读的书籍,将this的全貌展示如下. 先出几道题: var a = { value: 'a', fn:function() { alert(this.value); }};var b = a.fn;b(); //undefined var a = { va…
第一部分: 作用域和闭包 一.作用域 1. 作用域:存储变量并且查找变量的规则 2. 源代码在执行之前(编译)会经历三个步骤: 分词/此法分析:将代码字符串分解成有意义的代码块(词法单元) 解析/语法分析:将词法单元流转换成抽象语法树(AST) 代码生成:将抽象语法树转换成可执行代码 3. LHS查询: 变量出现在赋值操作左侧, RHS查询: 变量出现在赋值操作右侧 4. 作用域嵌套:在当前作用域中无法找到某个变量的时候,引擎就会在外层的嵌套作用域中继续查找,直到找到该变量,或抵达最外层的作用域…
概述 放假读完了<你不知道的javascript>上篇,学到了很多东西,记录下来,供以后开发时参考,相信对其他人也有用. 这篇笔记是这本书的下半部分,上半部分请见<你不知道的javascript>读书笔记1. 误区 经常可以在js中听到一句话,万物皆对象,其实在某种意义上来说,这句话是错的.因为js中还有很多对象的子类型,比如函数,数组,内置对象等,他们除了有对象的性质之外,还具有一些特别的行为,严格说来,他们不等于对象. 在其它语言中,属于对象的函数通常被称为方法.因此我们经常把…
笔记摘自:<你不知道的JavaScript(上)>第3章 函数作用域和块作用域 let 1.let 关键字可以将变量绑定到所在的任意作用域中 2.let 为其声明的变量隐式地劫持了所在的块作用域 3. 通常来讲,显示的代码优于隐式或一些精巧但不清晰的代码. 4.只要声明是有效的,在声明中的任意位置都可以使用{..}括号来为let创建一个用于绑定的块. 5.使用let进行的声明不会在块作用域中进行提升.声明的代码被运行之前,声明并不存在. 例如: { console.log(bar); // R…
用了一个星期把<你不知道的JavaScript>看完了,但是留下了很多疑惑,于是又带着这些疑惑回头看JavaScript的内容,略有所获. 第二遍阅读这本书,希望自己能够有更为深刻的理解. 词法作用域 --如果是 有状态 的解析过程,还会赋予单词语义-- 这本书是以编译原理的部份内容结合JavaScript来开篇的,所以如果没有学过编译原理,这一小部分内容显得有些晦涩. 虽然多数人没有接触过编译原理,但有一个东西必定知道,就是markdown语法.实际上,从markdown文件到HTML的过程…
前段时间在每天往返的地铁上抽空将 <你不知道的JavaScript(上卷)>读了一遍,这本书很多部分写的很是精妙,对于接触前端时间不太久的人来说,就好像是叩开了JavaScript的另一扇门,很多内容醍醐灌顶!所以决定将这本书分四个部分整理出来,同时也这本书强烈推荐给正在进阶的小伙伴们.这篇博文主要整理第一部分 作用域. 词法作用域 理解作用域 首先要介绍下JS参与程序 var a = 2的处理过程的演员表: 引擎 从头到尾负责整个JavaScript 程序的编译及执行过程. 编译器 引擎的好…