你不知道的JavaScript
拜读《你不知道的JavaScript》系列,为了加深理解与记忆做的笔记
野野YE
短发的女孩有故事,但漂亮的女流氓不告诉他。
展开
-
2.5 this 词法
之前介绍的四条规则已经可以包含所有正常的函数。但是 ES6 中介绍了一种无法使用这些规则的特殊函数类型:箭头函数。 箭头函数并不是使用 function 关键字定义的,而是使用被称为“胖箭头”的 操作符 => 定义的。箭头函数不使用 this 的四种标准规则,而是根据外层(函数或者全局)作用域来决定 this。 箭头函数的词法作用域: function foo(){ // 返回一个箭...原创 2019-11-13 18:37:59 · 264 阅读 · 0 评论 -
2.4 this 绑定例外
在某些场景下 this 的绑定行为会出乎意料,你认为应当应用其他绑定规则时,实际上应用的可能是默认绑定规则。 被忽略的 this 如果把 null 或者 undefined 作为 this 的绑定对象传入 call、apply 或者 bind,这些值在调用时会被忽略,实际应用的是默认绑定规则: function foo(){ console.log(this.a) } var a = 2 ...原创 2019-11-13 17:58:47 · 216 阅读 · 0 评论 -
2.3 this 绑定规则的优先级
上篇《2.2 this 全面解析》了解到函数调用中 this 绑定的四条规则,找到函数的调用位置并判断应当应用哪条规则。这篇学习假设某个调用位置可以应用多条规则,就必须给这些规则设定优先级。 毫无疑问,默认绑定的优先级是四条规则中最低的,所以可以先不考虑它。 那么隐式绑定和显式绑定哪个优先级更高? function foo() { console.log(this.a) } var obj...原创 2019-11-06 14:34:04 · 333 阅读 · 0 评论 -
2.2 this 全面解析
一、调用位置 调用位置就是函数在代码中被调用的位置(而不是声明的位置)。 寻找调用位置就是寻找“函数被调用的位置”。 分析调用栈(就是为了到达当前执行位置所调用的所有函数)。上述的调用位置就在当前正在执行的函数的前一个调用中。 如何从(调用栈中)分析出真正的调用位置: 可以把调用栈想象成一个函数调用链,就像前面代码段的注释中所写的一样。(特点:麻烦、易出错) 使用浏览器的调试工具查看调用栈 ...原创 2019-11-03 14:47:37 · 190 阅读 · 0 评论 -
2.1 关于this
一、为什么要用 this 使用了this function identify() { return this.name.toUpperCase() } function speak() { var greeting = "Hello, I'm " + identify.call(this) console.log(greeting) } var me = { n...原创 2019-10-29 18:04:09 · 113 阅读 · 0 评论 -
第一章 作用域是什么
1.编译原理 JavaScript 是一门编译语言。 传统编译语言中,程序中的源代码在执行之前会经历三个步骤,统称为“编译”: 分词/词法分析:将由字符组成的字符串分解成有意义的代码块,这些代码块被称为词法单元。 解析/语法分析:将词法单元流(数组)转换成一个由元素逐级嵌套所组成的代表了程序语法结构的树,这个树被称作“抽象语法树”(AST)。 代码生成:将 AST 转换为可执行代码的过程。 J...原创 2019-04-10 17:26:42 · 115 阅读 · 0 评论 -
第二章 词法作用域
第二章 词法作用域词法阶段查找欺骗词法`eval` :可以在运行期修改书写期的词法作用域`with` : 通常被当作重复引用同一个对象中的多个属性的快捷方式,可以不需要重复引用对象本身。性能 作用域有两种主要的工作模型: 词法作用域 动态作用域 词法阶段 理解词法作用域及其名称来历的基础: 大部分标准语言编译器的第一个工作阶段叫词法化(单词化)。词法化的过程会对源代码中的字符进行检查,...原创 2019-04-24 10:16:45 · 159 阅读 · 0 评论 -
1.5 作用域的闭包
当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。 举个例子: function foo(){ var a = 2 function bar(){ console.log(a) } return bar } var baz = foo() baz() //2 解释: 函数bar()的词法作用域能够访问foo()的内部作用域 retur...原创 2019-09-30 23:39:22 · 133 阅读 · 0 评论