2014-05-31 W.Y.
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 2. Variable object. 参考了一些译文,作为自己学习 ECMAScript 的一点积累。 概要 创建应用程序的时,总免不了要声明变量和函数。然而,解析器(interpreter)是如何以及从哪里找到这些数据(变量,函数)的,当我们引用一个变量时,在解析器内部又发生了什么? 许多 ECMAScript 程序员都知道变量与执行上下文密切相关: ```js var a = 10; // 全局上下文中的变量 (function () { var b = 20; // 函数上下文中的局部变量 } 继续阅读 »
2014-06-12 W.Y.
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 5. Functions. 其中大部分参考了 goddyzhao 的翻译。 概述 本文将介绍 ECMAScript 中一个非常常见的对象 -- 函数。我们将着重介绍函数都有哪些类型,不同类型的函数是如何影响上下文的变量对象的,以及每种类型的函数的作用域链中都包含什么,并回答诸如下面这样的问题:下面声明的函数有什么区别吗?(如果有,区别是什么)。 js var foo = function () { ... }; 上述方式创建的函数和如下方式创建的有什么不同? js function foo() { 继续阅读 »
2014-06-01 W.Y.
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 4. Scope chain. 概述 通过第二章 变量对象的学习我们知道,执行上下文的数据(变量、函数声明、函数形参)都是以属性的方式储存在变量对象中。 我们还知道,变量对象是在进入执行上下文阶段被创建和初始化,随后在执行代码阶段会对属性值进行更新。 本文将深入讨论与执行上下文密切相关的另外一个重要的概念 —— 作用域链(Scope Chain)。 more 定义 如果简单扼要地讲,那么作用域链就是与内部函数息息相关的一个概念。 众所周知,ECMAScript 允许创建内部函数,甚至可以将这些内部函数作 继续阅读 »
2014-06-21 W.Y.
此文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 7.1. OOP: The general theory. 概述 本文主要讨论 ECMAScript 中面向对象编程。之前已经有大量的文章讨论过该话题了,但本文与那些文章不同,本文主要从理论方面来解析其内部原理。重点讨论对象创建算法,对象之间的关系(包含最基本的关系 -- 继承)是如何形成的,并给出了明确的定义(我希望这可以消除一些文章中对于 JavaScript 中 OOP 的疑虑和混乱)。 more 概论、范式和思想 在开始讨论之前,有必要掌握一些 OOP 的基本特征,并弄清楚一些基本概念。 ECMAScr 继续阅读 »
2014-06-15 W.Y.
本文译自 Dmitry A. Soshnikov 的文章 ECMA-262-3 in detail. Chapter 6. Closures. 其中大部分参考了 goddyzhao 的翻译。 概述 本文将介绍在 JavaScript 中大家经常讨论的话题 -- 闭包(Closure)。事实上,闭包是个老生常谈的话题了,管如此,这里还是要试着从理论角度来讨论下闭包,看看 ECMAScript 中的闭包内部究竟是如何工作的。 正如在此前文章中提到的,这些文章都是系列文章,相互之间都是有关联的。因此,为了更好的理解本文要介绍的内容, 建议先去阅读下第四章 作用域链和第二章 变量对象。 more 概论 在开始讨论 ECMAScr 继续阅读 »
2016-09-19 曹强
概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 设立"严格模式"的目的,主要有以下几个: 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为; 消除代码运行的一些不安全之处,保证代码运行的安全; 提高编译器效率,增加运行速度; 为未来新版本的Javascript做好铺垫。 "严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。 另一方面,同样的代码,在"严格模式"中,可能会有不一样的运 继续阅读 »
2015-04-05 W.Y.
Airbnb 的 ES5 规范写的非常好,现在添加了 ES6 的部分。 另外阮一峰老师的 ECMAScript 6 入门值得参考。 more 类型 原始类型:值传递 string number boolean null undefined ```js const foo = 1; let bar = foo; bar = 9; console.log(foo, bar); // => 1, 9 ``` 复杂类型:引用传递 object array function ```js const foo = [1, 2]; const bar = foo; bar[0] = 9; console.log 继续阅读 »