0%

定义

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

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

阅读全文 »

定义

闭包在 MDN 中的定义:

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

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

阅读全文 »

定义

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

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

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

阅读全文 »

定义

在前面我们已经知道,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。
对于每个执行上下文,都有三个重要属性:

在上一篇的文章中,我们了解到执行上下文数据(变量、函数声明和函数的所有形参)是由这个变量对象的属性存储的,另外,我们知道每次进入上下文时都会创建变量对象并填充初始化值,并且在执行上下文代码时会发生它的修改。

下面我们叫了解执行上下文相关的另一个概念:作用域链。

阅读全文 »

由于JS是单线程的,每次只能做一件事情,其他的事情会放在指定的上下文栈中排队等待执行,所以执行上下文栈的作用是用来跟踪代码的,。

JS解释器在初始化代码的时候,首先会创建一个新的全局执行上下文到执行上下文栈顶中,然后随着每次函数的调用都会创建一个新的执行上下文放入到栈顶中,随着函数执行完毕后被执行上下文栈顶弹出,直到回到全局的执行上下文中。(栈:一种数据结构,遵循后进先出的原则)。下面我们说说执行上下文栈是如何工作的。

阅读全文 »

Flex 是 Flexible Box 的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。

阅读全文 »