Ecma International is a nonprofit standards organization for information and communication systems.It acquired its current name in 1994, when the European Computer Manufacturers Association (ECMA) changed its name to reflect the organization's global reach and activities.
TC39 的组织会议于 1996 年 11 月 21 日至 22 日在加州山景城的 Netscape 办公室举行,根据记载 [TC39 1996] 共有 30 位与会者(图 11)。会议开始前,Netscape 核心技术副总裁 David Stryker 和代表 Ecma 的 Jan van den Beld 分别致了欢迎辞。
-
delegation 委托,一种使对象从其他对象中获取部分状态和行为(而非从类定义中获取)的机制。
-
interpreter 解释器,一种会遍历程序的某种表示,并执行中途所遇操作的引擎。
-
Mocha JavaScript 语言前身的代号,同时也是 Netscape 最早的 JavaScript 引擎名称。
-
object 对象,一种将数据与行为组合为一等公民级复合实体的计算装置。定义和操作对象的机制,在不同的编程语言中各不相同。
如果向作用域内不存在 function 或 var 声明的变量名赋值,则会隐式创建具有该名称的全局变量。事实证明这种行为是导致错误的重要原因,因为如果拼写错了已声明的变量,也会静默
Automatic Semicolon Insertion (ASI)
浏览器一次都只会求值一个脚本。脚本之间通常共享同一个全局对象。由脚本创建的全局变量和函数,对所有后续脚本均可见。每个脚本都会运行到完成(run to completion),而不会被抢占(preëmption)或中断(interruption)。早期浏览器的这一特性已成为 JavaScript 的一条基本原理。脚本是执行的基本单位。每个脚本的执行一旦开始,就会持续到它完成为止。在脚本内部,不必担心其他脚本的并发执行,因为这种情况不会发生。
交互式的 JavaScript 网页是事件驱动的应用。其中的事件循环(event loop)由浏览器实现。最初,事件主要是由用户交互触发的。但在现代浏览器中事件有很多种,其中只有一些是源自用户的。执行完网页定义的所有脚本后,页面的 JavaScript 环境将保持活跃状态,等待事件发生。事件处理器可以与浏览器提供的对象相关联,这包括了许多 DOM 对象。
当被 JavaScript 事件处理器监听的事件发生时,它将被放入未决(pending)事件池中。一旦没有正在执行的 JavaScript 代码,浏览器就会从事件池中获取一个未决事件,并调用与其关联的函数。和脚本一样,事件处理器函数也是运行到完成为止的。
Arguments 对象
函数的 arguments 对象与它的形参联系在一起——在 arguments 对象的数字索引属性与函数的形参之间,存在着动态的映射。对 arguments 对象属性的更改,也会更改相应形参的值。并且可以发现对形参的更改,也会对相应的 arguments 对象属性生效:
// JavaScript 1.0-1.1
f(1, 2);
function f(argA, argB) {
alert(argA); // 显示 1
alert(f.arguments[0]); // 显示 1
f.arguments[0] = "one";
alert(argA); // 显示 one
argB = "two";
alert(f.arguments[1]); // 显示 two
alert(f.arguments.argB); // 显示 two
}