• JS 作用域与作用域链

    1. 作用域

    作用域就是代码的执行环境,全局执行环境就是全局作用域,函数的执行环境就是私有作用域,它们都是栈内存。

    执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它。

  • JS 堆栈内存

    堆栈内存的作用

    JS 引擎主要由两部分组成:

    • 内存堆:这是内存分配发生的地方
    • 调用栈:这是你的代码执行时的地方

    JS 中的内存分为堆内存和栈内存,所有堆栈内存的分配处理,浏览器(引擎)会自行在内部执行

    栈内存:

    • 提供一个供 JS 代码自上而下执行的环境(作用域,代码都是在栈内存中执行的)
    • 由于基本类型比较简单,它们都是直接在栈内存中开辟一个位置,直接把值存储进去的

    堆内存:引用值对应的空间 存储引用类型的(对象:键值对,函数:代码字符串)

  • JS变量提升

    1. 变量提升的概念

    变量提升的概念: 当栈内存(作用域)形成,JS 代码自上而下执行之前,浏览器首先会把所有带 var / function 关键字开头的进行提前声明或者定义,这种预先处理机制称为“变量提升”。

    声明(declare):var a (默认 undefined) 定义(defined):a = 12(定义其实就是赋值操作)

  • DOM的映射机制

    前言

    这在我们平常操作 DOM 的时候司空见惯。就比如:我通过获取一个元素来改变其样式,自然而然的反映到 HTML 页面中。

    但是,我们操作 JS 对象的时候,本质上操作的是 JS 堆内存,为什么会反映到页面中呢?就是因为浏览器存在这个 DOM 的映射机制。

  • 记第一次博客改版更新

    前言

    博客很久没有更新文章了,主要是自身处于就业、学习的双重焦虑状态。

    另外一个原因,是我在捣鼓上一个主题 next 的过程中,由于电脑的恢复出厂和一系列失误的原因,丢失了自己更改很久的版本。后来想再去重新做一遍已经失去了耐心。

    最近,也是在这一系列的压力之下,却是想通了,有种豁然开朗的感觉。于是又再一次的踏上征程。仅以此次改版纪念这一次重生。

    感谢一直以来都在默默支持我的你们。

© 2016-2019 destiny