摘要:
JavaScript执行上下文栈和变量对象 JS是 单线程 的语言,执行顺序肯定是 顺序执行 ,但是JS 引擎并不是一行一行地分析和执行程序,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段。 例子一: 变量提升 例子二: 函数提升 例子三:声明优先级, 函数 变量 上面三个例子中,第一个例 阅读全文
摘要:
js中的各种宽高以及位置总结 在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之间实现方式不同,常常会造成概念混淆,经过研究之后,这里来进行一个总结。 阅读全文
摘要:
JavaScript的运行机制 (1)所有同步任务都在主线程上执行,形成一个执行栈。 (2)主线程之外,还存在"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。 主线程自上而下执行所有代码,同步任务直接进入到主线程被执行,而异步任务则进入到 并注册相对 阅读全文
摘要:
数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 实现 1. reduce 参数 执行数组中每个值 (如果没有提供 )的函数,包含四个参数: 累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或 (见于下方)。 数组中正在处理的元素。 可选数组中正在处理的当前元素的索引。 如果提供 阅读全文
摘要:
new的过程 js // new运算的过程 / 1、创建一个空对象; 2、该空对象的原型指向构造函数(链接原型):将构造函数的 prototype 赋值给对象的 __proto__属性; 3、绑定 this:将对象作为构造函数的 this 传进去,并执行该构造函数; 4、返回新对象:如果构造函数返回 阅读全文
摘要:
堆数据结构 堆数据结构是一种树状结构。它的存取数据的方式与书架和书非常相似。我们只需要知道书的名字就可以直接取出书了,并不需要把上面的书取出来。JSON格式的数据中,我们存储的 可以是无序的,因为顺序的不同并不影响我们的使用,我们只需要关心书的名字。 队列 队列是一种先进先出( FIFO )的数据结 阅读全文
摘要:
JS是 单线程 的语言,执行顺序肯定是 顺序执行 ,但是JS 引擎并不是一行一行地分析和执行程序,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段。 例子一: 变量提升 例子二: 函数提升 例子三:声明优先级, 函数 变量 上面三个例子中,第一个例子是变量提升,第二个例子是函数提升,第三个例 阅读全文
摘要:
JavaScript 中的执行上下文和执行栈 执行上下文是当前 JavaScript 代码被 解析 和 执行 时所在环境的 抽象概念 。 执行上下文的类型 执行上下文总共有三种类型 全局执行上下文 :只有一个,浏览器中的全局对象就是 window 对象, 指向这个全局对象。 函数执行上下文 :存在无 阅读全文
摘要:
this的绑定方式基本有以下几种: 1. 隐式绑定 2. 显式绑定 3. new 绑定 4. window 绑定 5. 箭头函数绑定 隐式绑定 第一个也是最常见的规则称为 。 调用 ,所以 指向了对象 我们来看一个类似但稍微高级点的例子。 第一个sayName,指向的是wrapper 第二个sayN 阅读全文
摘要:
this 的指向,始终坚持一个原理: this 永远指向最后调用它的那个对象 如果没有调用的对象,那么调用对象就是全局对象window。 需要注意的是,这里我们没有使用严格模式,如果使用严格模式的话,那么全局对象就是 undefined,就会报错 Uncaught TypeError: Cannot 阅读全文