Skip to content

代码结构

语句

语句是执行行为(action)的语法结构和命令。

我们可以在代码中编写任意数量的语句。语句之间可以使用分号进行分割。

例如,我们将 “Hello World” 这条信息一分为二:

js
alert('Hello'); alert('World');

通常,每条语句独占一行,以提高代码的可读性:

js
alert('Hello');
alert('World');

分号

当存在换行符(line break)时,在大多数情况下可以省略分号。

js
alert('Hello')
alert('World')

在这,JavaScript 将换行符理解成“隐式”的分号。这也被称为自动分号插入

在大多数情况下,换行意味着一个分号。但是“大多数情况”并不意味着“总是”!

有很多换行并不是分号的例子,例如:

js
alert(3 +
1
+ 2);

代码输出 6,因为 JavaScript 并没有在这里插入分号。显而易见的是,如果一行以加号 "+" 结尾,那么这是一个“不完整的表达式”,不需要分号。

但存在 JavaScript 无法确定是否真的需要自动插入分号的情况。

js
alert("Hello");

[1, 2].forEach(alert);

这段代码的运行结果:先显示 Hello,然后显示 1,然后 2。

现在,让我们删除 alert 语句后的分号:

js
alert("Hello")

[1, 2].forEach(alert);

如果我们运行这段代码,只有第一个 Hello 会被显示出来(并且有一个报错,你可能需要打开控制台才能看到它)。并且不会再有数字被显示出来。

这是因为,JavaScript 引擎并没有假设在方括号 [...] 前有一个分号。因此,最后一个示例中的代码被视为了单个语句。

对于引擎来说,它是这样的:

js
alert("Hello")[1, 2].forEach(alert);

注释

你可以在脚本的任何地方添加注释,它们并不会影响代码的执行,因为引擎会直接忽略它们。

单行注释以两个正斜杠字符 // 开始。

就像这样:

js
// 这行注释独占一行
alert('Hello');

alert('World'); // 这行注释跟随在语句后面

多行注释以一个正斜杠和星号开始 /* 并以一个星号和正斜杠结束 */

js
/* 两个消息的例子。
这是一个多行注释。
*/
alert('Hello');
alert('World');

不支持注释嵌套!

不要在 /*...*/ 内嵌套另一个 /*...*/

下面这段代码报错而无法执行:

js
/*
  /* 嵌套注释 ?!? */
*/
alert( 'World' );

基于 MIT 许可发布