写在前头
大多数小伙伴看技术书籍都会用“啃”来描述读书的直观感受,当然我也是一个前端小白,白的透明那种,但是我在读技术书籍感觉到“啃”的时候,我希望把我啃红宝书第四版的过程的想法,总结带给大家,以供后来者能够更快上手。
注: 本文由于作者水平原因,如有错误之处,恳请大家指正,另外随着学习的深入,体会的加深,我会不断回来更新,修改这类文章。
思维导图
简述
函数这一章其实在有一定的编程基础,比如学过一点c语言就很好读下去。整体还是易读板块。
10.13 尾调用优化
- 什么是优化
外部函数的返回值是一个内部函数的返回值 - 10.13.1 尾调用优化的条件
①4个条件
核心唯一一个条件就是确定外部栈帧真的没有必要存在了。
②应用场景
③为什么要严格模式
在非严格模式下函数调用中允许使用 f.arguments和 f.caller,而它们都会引用外部函数的栈帧。
- 10.13.2 尾调用优化的代码
代码改进实例
10.14 闭包
- 概念
闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域
- 内部函数作用域链包含“父”函数的作用域
- 调用函数时
创建
这里看书的p310页。我也理解不太深刻。
活动对象
第一对象
传入参数,arguments对象。
第二对象
全局上下文的变量对象
- 函数执行
变量对象
在全局上下文中
活动变量
在函数局部上下文
作用域本质
在定义函数时,就会为它创建作用域链,预装载全局变量对象,并保存在内部的[[Scope]]中。在 调用这个函数时,会创建相应的执行上下文,然后通过复制函数的[[Scope]]来创建其作用域链。接着会创建函数的活动对象(用作变量对象)并将其推入作用域链的前端。在
- 销毁问题
书上的框架图十分清楚简单。
- 10.14.1 this对象
①内部函数
内部函数没有使用箭头函数定义,则 this 对象会在运行时绑定到执行函数的上下文。
②严格模式
在全局函数中调用,则 this 在非严格模式下等于 window。
在严格模式下等于 undefined。如果作为某个对象的方法调用,则 this 等于这个对象。
注意
匿名函数在这种情况下不会绑定到某个对象,这就意味着 this 会指向 window。
在严格模式下 this 是 undefined。
③this 和 arguments 都是不能直接在内部函数中访问的。
- 10.14.2 内存泄漏
核心:解除对对象的引用。