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

    | 【示例】下面的代码也是可以运行的:```html alert(‘Hello’) alert(‘World’)

    1. |
    2. | --- |
    3. 二、JavaScript 将换行符理解成“隐式”的分号。这也被称为自动分号插入。<br />1、在大多数情况下,换行意味着一个分号。但是“大多数情况”并不意味着“总是”!<br />2、有很多换行并不是分号的例子
    4. | 【示例】```html
    5. alert(3 +
    6. 1
    7. + 2);

    1、代码输出6,因为 JavaScript 并没有在这里插入分号。
    2、显而易见的是,如果一行以加号”+”结尾,那么这是一个“不完整的表达式”,不需要分号。所以,这个例子得到了预期的结果。 | | —- |

    三、存在 JavaScript 无法确定是否真的需要自动插入分号的情况。
    1、这种情况下发生的错误是很难被找到和解决的。

    | 【示例】```javascript [1, 2].forEach(alert)

    1、运行结果:先显示1,然后显示2。 |
    | --- |
    
    | ☆-1【示例】我们在代码前面插入一个alert语句,并且不加分号:```javascript
    alert("There will be an error")
    [1, 2].forEach(alert)
    

    1、现在,如果我们运行代码,只有第一个alert语句的内容被显示了出来,随后我们收到了一个错误!
    2、但是,如果我们在第一个alert语句末尾加上一个分号,就工作正常了:```javascript alert(“All fine now”);

    [1, 2].forEach(alert)

    3、现在,我们能得到 “All fine now”,然后是1和2。 |
    | --- |
    
    2、无分号的变体(variant)会出现报错,是因为 JavaScript 并不会在方括号[...]前添加一个隐式的分号。
    
    | ☆-1【示例】因为没有自动插入分号,【☆-1】中的代码被视为了一条简单的语句,我们从引擎看到的是这样的:```javascript
    alert("There will be an error")[1, 2].forEach(alert)
    

    1、但它应该是两条语句,而不是一条。这种情况下的合并是不对的,所以才会造成错误。诸如此类,还有很多。 | | —- |

    四、即使语句被换行符分隔了,我们依然建议在它们之间加分号。