0%

在项目中,我们经常会绑定一些持续触发的事件,比如 resize、scroll、mousemove 等等,如果事件调用无限制,会加重浏览器负担,导致用户体验差,我们可以使用 debounce(防抖)和 throttle(节流)的方式来减少频繁的调用,同时也不会影响实际的效果。

阅读全文 »

定义

在《JavaScript 高级程序设计》中讲到传递参数:

ECMAScript 中所有函数的参数都是按值传递的。这意味着函数外的值会被复制到函数内部的参数中,就像从一个变量复制到另一个变量一样。如果是原始值,那么就跟原始值变量的复制一样,如果是引用值,那么就跟引用值变量的复制一样。对很多开发者来说,这一块可能会不好理解,毕竟变量有按值和按引用访问,而传参则只有按值传递。

阅读全文 »

定义

闭包在 MDN 中的定义:

一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域。在 JavaScript 中,每当创建一个函数,闭包就会在函数创建的同时被创建出来。

这里只有一类函数除外,那就是通过 Function 构造器创建的函数,因为其[[Scope]]只包含全局对象。

阅读全文 »

定义

每次当控制器转到 ECMAScript 可执行代码的时候,即会进入到一个执行上下文。执行上下文(简称-EC)是 ECMA-262 标准里的一个抽象概念,用于同可执行代码(executable code)概念进行区分。

标准规范没有从技术实现的角度定义 EC 的准确类型和结构,这应该是具体实现 ECMAScript 引擎时要考虑的问题。

活动的执行上下文组在逻辑上组成一个堆栈。堆栈底部永远都是全局上下文(global context),而顶部就是当前(活动的)执行上下文。堆栈在 EC 类型进入和退出上下文的时候被修改(推入或弹出)。

阅读全文 »