让我们从头开始。
一个程序,经常被称为 源代码 或者只是 代码,是一组告诉计算机要执行什么任务的特殊指令。代码通常保存在文本文件中,虽然你也可以使用JavaScript在一个浏览器的开发者控制台中直接键入代码 —— 我们一会儿就会讲解。
合法的格式与指令的组合规则被称为一种 计算机语言,有时被称作它的 语法,这和英语教你如何拼写单词,和如何使用单词与标点创建合法的句子差不多是相同的。
语句
在一门计算机语言中,一组单词,数字,和执行一种具体任务的操作符构成了一个 语句。在JavaScript中,一个语句可能看起来像下面这样:
a = b * 2;
字符a
和b
被称为 变量(参见“变量”),它们就像简单和盒子,你可以把任何东西存储在其中。在程序中,变量持有将被程序使用的值(比如数字42
)。可以认为它们就是值本身的标志占位符。
相比之下,2
本身只是一个值,称为一个 字面值,因为它没有被存入一个变量,是独立的。
字符=
和*
是 操作符(见“操作符”) —— 它们使用值和变量实施动作,比如赋值和数学乘法。
在JavaScript中大多数语句都以末尾的分号(;
)结束。
语句a = b * 2;
告诉计算机,大致上,去取得当前存储在变量b
中的值,将这个值乘以2
,然后将结果存回到另一个我们称为a
变量里面。
程序只是许多这样的语句的集合,它们一起描述为了执行你的程序的意图所要采取的所有步骤。
表达式
语句是由一个或多个 表达式 组成的。一个表达式是一个引用,指向变量或值,或者一组用操作符组合的变量和值。
例如:
a = b * 2;
这个语句中有四个表达式:
2
是一个 字面量表达式b
是一个 变量表达式,它意味着取出它的当前值b * 2
是一个 算数表达式,它意味着执行乘法a = b * 2
是一个 赋值表达式,它意味着将表达式b * 2
的结果赋值给变量a
(稍后有更多关于赋值的内容)
一个独立的普通表达式也被称为一个 表达式语句,比如下面的:
b * 2;
这种风格的表达式语句不是很常见也没什么用,因为一般来说它不会对程序的运行有任何影响 —— 它将取得b
的值并乘以2
,但是之后不会对结果做任何事情。
一种更常见的表达式语句是 调用表达式 语句(见“函数”),因为整个语句本身是一个函数调用表达式:
alert( a );
执行一个程序
这些程序语句的集合如何告诉计算机要做什么?这个程序需要被 执行,也称为 运行这个程序。
在开发者们阅读与编写时,像a = b * 2
这样的语句很有帮助,但是它实际上不是计算机可以直接理解的形式。所以一个计算机上的特殊工具(不是一个 解释器 就是一个 编译器)被用于将你编写的代码翻译为计算机可以理解的命令。
对于某些计算机语言,这种命令的翻译经常是在每次程序运行时从上向下,一行接一行完成的,这通常成为代码的 解释。
对于另一些语言,这种翻译是提前完成的,成为代码的 编译,所以当程序稍后 运行 时,实际上运行的东西已经是编译好,随时可以运行的计算机指令了。
JavaScript通常被断言为是 解释型 的,因为你的JavaScript源代码在它每次运行时都被处理。但这并不是完全准确的。JavaScript引擎实际上在即时地 编译 程序然后立即运行编译好的代码。
注意: 更多关于JavaScript编译的信息,参见本系列的 作用域与闭包 的前两章。