JavaScript之深入Map
Mar 1, 2022 Web前端

Map Map是一种ES6的新增集合类型,带来了真正的键/值存储机制。 Map的API Map的特性 Map实例会维护键值对的插入顺序,可以根据插入顺序执行迭代操作。 映射实例可以提供一个迭代器,可以通过entries方法或for...of遍历取得迭代器 Map与Object的差异 1. 内存占用 …

JavaScript之深入Set
Mar 1, 2022 Web前端

1. Set是什么? Set是ES6新增的一种新集合类型,非常像是加强的Map,因为大多数API和行为是共有的。 2. Set的基本API 初始化完Set后 1.使用add()增加值 //add函数返回集合的实例 2.使用has()查询 3.通过size获得元素数量 4.使用delete()和cle…

JavaScript之深入闭包
Feb 18, 2022 Web前端

1. 什么是闭包 闭包指那些能够访问自由变量的函数。 自由变量:指在函数中使用的,但既不是函数参数也不是函数的局部变量的变量。 2. 分析闭包 在闭包中,函数上下文维护了一个作用域链: 闭包通过这个维护的作用域链可以访问到维护变量的活动对象中的值。 3. 闭包题目 常见闭包题目:循环打印

JavaScript之深入执行上下文
Feb 18, 2022 Web前端

执行过程如下: 1. 执行全局代码,创建全局执行上下文,全局上下文被压入执行上下文栈 2. 全局上下文初始化,初始化的同时,checkscope函数被创建,保存作用域链到函数的内部属性[[scope]] 3. 执行checkscope函数,创建checkscope函数执行上下文,checkscope…

JavaScript之深入this
Feb 18, 2022 Web前端

1. Reference Reference是一个特殊类型,只存于规范里的抽象类型。它们是为了更好地描述语言的底层行为逻辑才存在的,但并不存在于实际的js代码中。 Reference有三个属性: 1. base 2. name 3. strict 有一个从Reference类型获取对应值的方法:Ge…

JavaScript之深入作用域链
Feb 18, 2022 Web前端

1. 作用域链 在查找变量时,会先从当前上下文的变量对象中查找,如果没有找到,就会从父级(词法层面上的父级)执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象。这样由多个执行上下文的变量对象构成的链表就叫做作用域链。 2. 函数创建 函数有一个内部属性[[scope]],当函数…

JavaScript之深入变量对象
Feb 18, 2022 Web前端

1. 什么是变量对象 每个执行上下文都有三个重要属性: 1. 变量对象(Variable object,VO) 2. 作用域链(Scope chain) 3. this 变量对象是与执行上下文相关的数据作用域,存储了在上下文中定义的变量和函数声明。不同执行上下文的变量对象稍有不同。 首先:全局上下文…

JavaScript之执行上下文栈
Feb 18, 2022 Web前端

1. JavaScript可执行代码 JavaScript可执行代码有三种: 1. 全局代码 2. 函数代码 3. eval代码 2. 执行上下文栈 在js执行到一个函数的时候,就会进行执行上下文(execution context)的准备。 执行上下文栈(Execution context sta…

JavaScript之深入词法作用域
Feb 18, 2022 Web前端

1. 什么是词法作用域? JavaScript采用的是词法作用域(静态作用域),函数的作用域在函数定义的时候就决定了。 以上就是词法作用域(静态作用域)。 2. 静态作用域例子 以上的例子均输出local scope,都是从函数定义位置作为作用域链的头部往上找。嵌套的函数f()定义在这个作用域链里,…