首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
你不知道的Javascript(上卷)读书笔记之二 ---- 词法作用域
】的更多相关文章
JS闭包—你不知道的JavaScript上卷读书笔记(二)
关于闭包,初学者会被绕的晕头转向,在学习的路上也付出了很多精力来理解. 让我们一起来揭开闭包神秘的面纱. 闭包晦涩的定义 看过很多关于闭包的定义,很多讲的云里雾里,晦涩难懂.让不少人以为闭包是多么玄乎的东西.在我看过的所有书籍中,我更喜欢<你不知道的javascript(上卷)>的定义: 当函数可以记住并访问所在的词法作用域时,就产生了闭包,或者说函数在创建时的词法作域之外执行. 通俗的来说(不严谨): 就是函数套函数,子函数可以有权访问父函数的变量.父函数的父函数的变量.一直到全局变量.子函…
你不知道的Javascript(上卷)读书笔记之二 ---- 词法作用域
在前一篇文章中,我们把作用域定义为"管理.维护变量的一套规则",接下来是时候来深入讨论一下Js的作用域问题了,首先我们要知道作用域一般有两种主要的工作类型,一种是词法作用域,一种是动态作用域, Javascript采用的是词法作用域, 关于动态作用域的有兴趣的可以自行Google. 1.词法阶段 首先我们要理解"词法阶段"这个词语,我们已经了解到Js存在一个编译阶段,编译阶段的第一步就是分词/词法分析,我们可以简称为"词法阶段" 简单来说,词法作…
JavaScript词法作用域—你不知道的JavaScript上卷读书笔记(一)
前段时间在每天往返的地铁上抽空将 <你不知道的JavaScript(上卷)>读了一遍,这本书很多部分写的很是精妙,对于接触前端时间不太久的人来说,就好像是叩开了JavaScript的另一扇门,很多内容醍醐灌顶!所以决定将这本书分四个部分整理出来,同时也这本书强烈推荐给正在进阶的小伙伴们.这篇博文主要整理第一部分 作用域. 词法作用域 理解作用域 首先要介绍下JS参与程序 var a = 2的处理过程的演员表: 引擎 从头到尾负责整个JavaScript 程序的编译及执行过程. 编译器 引擎的好…
《你不知道的JavaScript》读书笔记(二)词法作用域
JavaScript 采用的是 词法作用域 的工作模型. 定义 词法化:大部分标准语言编译器的第一个工作阶段叫词法化(单词化),这个过程会对源代码中的字符进行检查,如果是有状态的解析过程,还会赋予单词意义. 词法作用域:定义在 词法阶段 的作用域. 词法作用域由谁决定:由你在写代码时将 变量 和 块作用域 写在哪里来决定.因此大部分情况下,词法分析器处理代码时会保持作用于不变. [例] function foo(a){ ; function bar(c){ console.log(a, b, c…
JavaScript中的对象与原型—你不知道的JavaScript上卷读书笔记(四)
一.对象 对象可以通过两种形式定义:声明(文字)形式和构造形式.即: var myObj = { key: value // ... }; 或: var myObj = new Object(); myObj.key = value; 对象还有一些内置对象: String.Number.Boolean.Object.Function.Array.Date.RegExp.Error. 访问对象属性可以使用. 操作符(属性访问)或者[] 操作符(键访问),区别在于:于. 操作符要求属性名满足标识符的…
JavaScript中的this—你不知道的JavaScript上卷读书笔记(三)
this是什么? this 是在运行时进行绑定的,并不是在编写时绑定,它的上下文取决于函数调用时的各种条件.this 的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式.当一个函数被调用时,会创建一个活动记录(有时候也称为执行上下文).这个记录会包含函数在哪里被调用(调用栈).函数的调用方法.传入的参数等信息.this 就是记录的其中一个属性,会在函数执行的过程中用到. 调用位置与调用栈: 调用位置就是函数在代码中被调用的位置(而不是声明的位置). 下面我们来看看到底什么是调用栈和调用位…
你不知道的javascript 上卷 读书笔记
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> </body> <script type="text/javascript"> { let j; for(j=0;j<10;j…
《你不知道的JavaScript》读书笔记(一)作用域
名词 引擎:从头到尾负责整个 JavaScript 程序的 编译 及 执行 过程. 编译器:负责 语法分析 及 代码生成. 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限. LHS:赋值操作的左侧(理解为赋值操作的目标是谁,LHS 查询 试图找到变量的容器本身,并对其 赋值 ). RHS:赋值操作的右侧(理解为谁是赋值操作的源头,RHS 查询 就是 查找 某个变量的值). JavaScript 的编译 Java…
《你不知道的javascript》读书笔记2
概述 放假读完了<你不知道的javascript>上篇,学到了很多东西,记录下来,供以后开发时参考,相信对其他人也有用. 这篇笔记是这本书的下半部分,上半部分请见<你不知道的javascript>读书笔记1. 误区 经常可以在js中听到一句话,万物皆对象,其实在某种意义上来说,这句话是错的.因为js中还有很多对象的子类型,比如函数,数组,内置对象等,他们除了有对象的性质之外,还具有一些特别的行为,严格说来,他们不等于对象. 在其它语言中,属于对象的函数通常被称为方法.因此我们经常把…
《你不知道的javascript》读书笔记1
概述 放假读完了<你不知道的javascript>上篇,学到了很多东西,记录下来,供以后开发时参考,相信对其他人也有用. js的工作原理 引擎:从头到尾负责整个js的编译和运行.(很大一部分是查找操作,因此比如二分查找等查找方法才这么重要.) 编译器:负责语法分析和代码生成. 作用域:收集所有声明的变量,并且确认当前代码对这些变量的访问权限. LHS查询和RHS查询: LHS查询:当变量出现在赋值操作左边时,会发生LHS查询,如果LHS查询不到,那么会新建一个变量.严格模式下,如果这个变量是全…