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

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

写在前头

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


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


思维导图

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 内存泄漏

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



目录
相关文章
|
4月前
|
并行计算 算法 数据处理
编程之道:从代码中领悟技术与生活的哲理
【8月更文挑战第28天】在数字世界的迷宫中,每一行代码都像是宇宙中的一个星系,既独立又相互联系。本文将通过一段简单的Python代码示例,探讨如何从编程实践中汲取生活智慧。我们将看到,代码不仅仅是冷冰冰的指令序列,它也能反映出人类思维的深度和广度。正如甘地所言:“你必须成为你希望在世界上看到的改变。”在编程的世界里,我们同样可以创造并见证这种改变。
51 3
|
1月前
|
Python
探索编程之道:从代码中寻找生活的哲理
【10月更文挑战第35天】在编程的世界里,每一行代码都蕴含着深刻的意义。就像生活中的每一个选择都会影响我们的未来一样,代码中的每个决策也会塑造程序的运行结果。本文将通过一个简单的代码示例,探讨如何从编程中汲取生活的智慧,以及如何在面对技术挑战时保持初心和持续学习的态度。让我们一起走进编程的世界,发现那些隐藏在代码背后的生活哲理吧!
|
2月前
|
程序员
代码与生活:技术感悟中的哲理
【10月更文挑战第20天】 在编程的世界里,我们不仅仅是在编写代码,更是在塑造一种生活方式。本文将探讨如何将编程思维应用到日常生活中,以及这种思维方式如何帮助我们更好地理解世界和自己。通过具体的例子和深入的分析,我们将看到,编程不仅仅是一种技能,更是一种生活哲学。
37 0
|
3月前
|
程序员
从代码中感悟生活的哲理
【9月更文挑战第12天】本文以编程为引子,探讨了技术背后的哲学思考。文章通过深入浅出的方式,结合生活中的小故事和简单的代码示例,引导读者理解在看似冰冷的代码背后所蕴含的热情与智慧。文章旨在启发读者,无论面对何种挑战,都应保持初心,勇于探索,不断学习,最终找到属于自己的人生方向。
|
7月前
|
人工智能 架构师 机器人
高薪程序员的三大窍门,你准备好了吗?
“高薪,月薪过万”已经成为人们对于程序员的刻板印象,但实际上对于二三线城市的码农来说,月薪过万似乎仍然是一个难以达到的目标。地理位置、房价以及升职加薪等问题让程序员陷入了薪资困境。作为一位程序员,若想获得自己理想的工资水平,需要具备哪些要素呢?
|
设计模式 架构师 Java
牛皮了!世界级架构师,图解面向对象编程,小学生都能看得懂
面向对象编程(Object-oriented Programming,缩写:OOP)是软件工程中一种具有对象概念的编程范式(Programming Paradigm),同时也是一种程序开发的抽象方针,与之对应的编程范式还有:函数式编程(Functional Programming)、过程式编程(Procedural Programming)、响应式编程(Reactive Programming)等。
|
前端开发 JavaScript C语言
带你读书之“红宝书”:第十章 函数①
带你读书之“红宝书”:第十章 函数①
104 0
带你读书之“红宝书”:第十章 函数①
|
前端开发 C语言
带你读书之“红宝书”:第十章 函数④
带你读书之“红宝书”:第十章 函数④
84 0
带你读书之“红宝书”:第十章 函数④
|
前端开发 JavaScript C语言
带你读书之“红宝书”:第十章 函数⑧
带你读书之“红宝书”:第十章 函数⑧
84 0
带你读书之“红宝书”:第十章 函数⑧
|
JavaScript 前端开发 Python
带你读书之“红宝书”:第三章 语法基础(上)
带你读书之“红宝书”:第三章 语法基础(上)
84 0
带你读书之“红宝书”:第三章 语法基础(上)
下一篇
DataWorks