带你读书之“红宝书”:第十章 函数⑨

简介: 带你读书之“红宝书”:第十章 函数⑨

写在前头

大多数小伙伴看技术书籍都会用“啃”来描述读书的直观感受,当然我也是一个前端小白,白的透明那种,但是我在读技术书籍感觉到“啃”的时候,我希望把我啃红宝书第四版的过程的想法,总结带给大家,以供后来者能够更快上手。


注: 本文由于作者水平原因,如有错误之处,恳请大家指正,另外随着学习的深入,体会的加深,我会不断回来更新,修改这类文章。


思维导图

1dae418daf7b468f9ced6373ea9aa214_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


简述

函数这一章其实在有一定的编程基础,比如学过一点c语言就很好读下去。整体还是易读板块。


10.13 尾调用优化

57d945ff3da44a93a3c78273ea29c03f_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


  • 什么是优化
    外部函数的返回值是一个内部函数的返回值
  • 10.13.1 尾调用优化的条件

①4个条件

核心唯一一个条件就是确定外部栈帧真的没有必要存在了。

②应用场景

③为什么要严格模式

在非严格模式下函数调用中允许使用 f.arguments和 f.caller,而它们都会引用外部函数的栈帧。

  • 10.13.2 尾调用优化的代码

代码改进实例


10.14 闭包

9146a79791164fd9bfe54318ea2ae213_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


  • 概念

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域

  • 内部函数作用域链包含“父”函数的作用域
  • 调用函数时

创建

这里看书的p310页。我也理解不太深刻。

活动对象

第一对象

传入参数,arguments对象。

第二对象

全局上下文的变量对象


  • 函数执行

变量对象

在全局上下文中

活动变量

在函数局部上下文

作用域本质

在定义函数时,就会为它创建作用域链,预装载全局变量对象,并保存在内部的[[Scope]]中。在 调用这个函数时,会创建相应的执行上下文,然后通过复制函数的[[Scope]]来创建其作用域链。接着会创建函数的活动对象(用作变量对象)并将其推入作用域链的前端。在


  • 销毁问题

书上的框架图十分清楚简单。

  • 10.14.1 this对象

①内部函数

内部函数没有使用箭头函数定义,则 this 对象会在运行时绑定到执行函数的上下文。

②严格模式

在全局函数中调用,则 this 在非严格模式下等于 window。

在严格模式下等于 undefined。如果作为某个对象的方法调用,则 this 等于这个对象。


注意

匿名函数在这种情况下不会绑定到某个对象,这就意味着 this 会指向 window。

在严格模式下 this 是 undefined。

③this 和 arguments 都是不能直接在内部函数中访问的。

  • 10.14.2 内存泄漏

核心:解除对对象的引用。



目录
相关文章
|
前端开发 JavaScript C语言
带你读书之“红宝书”:第十章 函数①
带你读书之“红宝书”:第十章 函数①
99 0
带你读书之“红宝书”:第十章 函数①
|
前端开发 C语言
带你读书之“红宝书”:第十章 函数④
带你读书之“红宝书”:第十章 函数④
77 0
带你读书之“红宝书”:第十章 函数④
|
前端开发 JavaScript C语言
带你读书之“红宝书”:第十章 函数⑧
带你读书之“红宝书”:第十章 函数⑧
81 0
带你读书之“红宝书”:第十章 函数⑧
|
JavaScript 前端开发 Python
带你读书之“红宝书”:第三章 语法基础(上)
带你读书之“红宝书”:第三章 语法基础(上)
75 0
带你读书之“红宝书”:第三章 语法基础(上)
|
存储 JavaScript 前端开发
带你读书之“红宝书”:第十章 函数②
带你读书之“红宝书”:第十章 函数②
101 0
带你读书之“红宝书”:第十章 函数②
|
JavaScript 前端开发 C语言
带你读书之“红宝书”:第十章 函数③
带你读书之“红宝书”:第十章 函数③
103 0
带你读书之“红宝书”:第十章 函数③
|
前端开发 JavaScript C语言
带你读书之“红宝书”:第十章 函数⑤
带你读书之“红宝书”:第十章 函数⑤
68 0
带你读书之“红宝书”:第十章 函数⑤
|
前端开发 C语言
带你读书之“红宝书”:第十章 函数⑦
带你读书之“红宝书”:第十章 函数⑦
91 0
带你读书之“红宝书”:第十章 函数⑦
|
安全 前端开发 C语言
带你读书之“红宝书”:第十章 函数⑥
带你读书之“红宝书”:第十章 函数⑥
76 0
带你读书之“红宝书”:第十章 函数⑥
|
前端开发 JavaScript
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型前部分
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型前部分
83 0
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型前部分