• JS 函数

    在 JS 中,函数就是一个方法,一般都是为了实现某个功能。

    1. 函数的作用和创建

    var total = 10;
    total += 10;
    total = total/2;
    total = total.toFixed(2); //=> 保留小数点后面两位,toFixed 时候数字包装对象的方法,用来保留小数点后面的位数
    

    在后续的代码中,依然想实现相同的操作,就需要重新编写代码。这样的方式会导致页面中存在大量冗余的代码,也降低了开发效率。

  • JS 作用域与作用域链

    1. 作用域

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

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

  • JS 堆栈内存

    ![enter description here][1]

    堆栈内存的作用

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

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

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

    栈内存:

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

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

  • JS变量提升

    1. 变量提升的概念

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

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

  • DOM的映射机制

    前言

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

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

© 2016-2019 destiny