CodingWithAlice

我的一方小天地,如果对你有帮助,那真的太好了

11 栈和堆

11 栈和堆 几个基础概念: 静态语言:在声明变量之前需要先定义变量类型,例如C 动态语言:在运行过程中需要检查数据类型的语言,例如JS 弱类型语言:支持隐式类型转换的语言 强类型语言:不支持隐式类型转换的语言 JS是一种弱类型(不需要提前声明类型,JS在运行代码时自己计算),动态类型(一个变量可以保存多种类型的数据)语言。【热知识:js中字符串不能被修改】 js数据类型 ...

10 执行上下文视角的 this

10 执行上下文视角的 this 作用域链和this是两套不同的体系,唯一的关系是在全局上下文中的this指向window对象,作用域链的最底端包含了window对象 ## this是什么 如下图所示,`this`是和执行上下文绑定的,每个执行上下文中都有一个`this`,按照执行上下文的分类,`this`也可以分为三类: - 全局执行上下文中的`this` 函数执行上...

09 闭包

09 闭包 理论: ​ 在 JavaScript 中,根据 词法作用域 的规则,内部函数总是可以访问其外部函数中声明的变量,当通过调用一个外部函数返回一个内部函数后,即使该外部函数已经执行结束了,但是内部函数引用外部函数的变量依然保存在内存中,我们就把这 些变量的集合称为闭包。 闭包的重点:在函数内部定义其他函数返回!!!不是调用外部作用于域块就能够直接形成的。 闭包优缺点: ...

09 作用域链

09 作用域链 结论:作用域链(outer指向的上一个上下文)由函数声明的位置决定。下面是帮助理解的例子: 先开看一段代码:输出的结果应该是什么? – bye,坑 原因:JavaScript 作用域链是由词法作用域决定的,词法作用域就是根据代码的位置来决定的,详见下文分析 作用域链:JavaScript 引擎首先会在“当前的执行上下文”中查找该变量,如果在当前的变量环境中没有查找...

08 JS如何实现块级作用域

08 JS如何实现块级作用域 总结 块级作用域就是通过 词法环境 的栈结构来实现的,而变量提升是通过变量环境来实现 块级作用域 作用域:指在程序中定义变量的区域,该位置决定了变量的生命周期。 变量提升的缺陷: 变量容易在不被察觉的情况下被覆盖掉 本应销毁的变量没有被销毁 ES6通过引入块级作用域并配合 let、const 关键字解决 变量提升 的问题,作用块内声明的变量...

07 执行栈/调用栈(执行上下文栈)

07 执行栈/调用栈(执行上下文栈) 调用栈定义 在执行上下文创建好后,JavaScript引擎会将执行上下文压入栈中,通常把这种用来管理执行上下文的栈称为执行上下文栈,又称调用栈/执行栈 有三种情况会创建执行上下文 js执行 全局代码 时 – 编译全局代码,并创建全局执行上下文 调用一个 函数 时 – 编译函数,并创建函数执行上下文(函数执行结束后,当前函数执行上下文被销毁)...

06 JS执行顺序:编译+执行

06 JS执行顺序:编译+执行 1、编译阶段 编译阶段会生成两部分内容: 创建执行上下文 The Creation Phase 可执行代码 创建执行上下文(Execution context) 定义:执行上下文是JavaScript执行一段代码时的运行环境。比如调用一个函数,就会进入这个函数的执行上下文,确定该函数在执行期间用到的诸如this、变量...

05-4 回流/重绘+分层合成机制

05-4 回流/重绘+分层合成机制 配合博文一起看:05 渲染流程:HTML、CSS和JavaScript是如何变成页面的 参考另一篇博文:回流/重绘 帧 + 帧率 显示器怎么显示图像? 每个显示器都有自己的刷新频率,一般是60HZ(每秒更新60张图片 – 来源于显卡中的 前缓冲区),将读取的图像显示到显示器上。 显卡的作用? 显...

05-3 白屏优化?

05-3 白屏优化? 白屏定义 - 视觉阶段 阶段一(原来的页面):发起主页面 HTML 请求后、网络进程拿到数据喂给 渲染进程 前 阶段二(解析白屏):渲染进程 拿到数据后,会创建一个 空白页面 ,然后 等待 css 和 js 文件加载完成 -> 先生成 CSSOM -> 执行 js -> 合成布局树 -> 首次渲染 阶段三(新页面):首次渲染完成后,进入完...

05-2 html+js+css是如何解析渲染的

05-2 html+js+css是如何解析渲染的 CSS 是如何工作的 - 按照js是否存在/引入方式不同 1/3、html + css 文件的渲染流程分析 先看下面的一个示例代码 分析一下这段示例代码是怎么渲染的: 核心要注意的几点: 1、渲染进程/浏览器进程,发起的主页面请求被送到 网络进程 中去执行 2、网络进程请求到 HTML 数据后,将其发送给 渲染进程,然后渲染...