美文网首页
JavaScript 语句行尾的可选分号

JavaScript 语句行尾的可选分号

作者: winwangqi | 来源:发表于2016-10-25 00:13 被阅读56次

JavaScript 和其他许多编程语言一样,使用分号(;)将语句分隔开。这对增强代码的可读性和整洁性是非常重要的。在 JavaScript 中,如果语句各自独占一行,通常可以省略语句之间的分号。

不过,在一些地方省略掉分号可能会使你的代码发生意外的错误。以下是需要注意的细节:


1. JavaScript 并不是在所有换行处都填补分号:只有在缺少了分号就无法正确解析代码的时候,JavaScript 才会填补分号。


var a

a

=

3

console.log(a)

JavaScript 将其解析为:


var a; a = 3; console.log(a);

// JavaScript 给第一行添加了分号,因为如果没有分号,JavaScript 就无法解析代码 var a a。

// 第二个 a 可以单独当作一条语句 “a;”,但 JavaScript 并没有给第二行结尾填补分号,

// 因为它可以和第三行内容一起解析为 “a = 3”;

再看一个例子:


var y = x + f

(a+b).toString()

JavaScript 会把这段代码解释成:


var y = x + f(a+b).toString();  // 第二行的圆括号和第一行的 f 组成了函数调用

这或许与我们的本意大相径庭,所以为了保证代码的正确执行,我们必须填写行尾的显式分号。


2. 通常来讲,如果一条语句以“(”、“[”、“/”、“+”或“-”开始,那么它极有可能和前一条语句合在一起解析。

以“/”、“+”和“-”开始的语句并不常见,而以“(”和“[”开始的语句则非常常见。所以一些保守的程序员为保守起见,喜欢在语句前加上一个分号以保证程序的正确执行。例如:


var x = 0   // 这里省略了分号

;[x, x+1, x+2].forEach(console.log) // 前面的分号保证了正确地语句解析

如果当前语句和下一行语句无法合并解析,JavaScript 则在第一行后填补分号,这是通用规则,但有两个例外:

a. 在涉及returnbreakcontinue语句的场景中。如果这三个关键字后紧跟着换行,JavaScript 则会在换行处填补分号。例如:


return

true;

JavaScript 会解析成:


return; true;

而代码的本意是这样:


return  true;

b. 在涉及“++”和“--”运算符的时候,如果将其用作后缀表达式,它和表达式应该在同一行。否则,行尾将填补分号,同时“++”或“--”将会作为下一行代码的前缀操作符并与之一起解析。例如:


x

++

y

这段代码将解析为x; ++y,而不是x++; y


在此建议,不要忘记在语句后面加上分号。

JavaScript 权威指南(第六版) >> 第2章 此法结构 >> 2.5 可选的分号

相关文章

  • JavaScript 语句行尾的可选分号

    JavaScript 和其他许多编程语言一样,使用分号(;)将语句分隔开。这对增强代码的可读性和整洁性是非常重要的...

  • JavaScript自动分号补齐的坑

    自动分号补齐(auto semicolon insertion,简称ASI) 在JavaScript中,行尾的分号...

  • Kotlin学习笔记(1) - 基础

    基础语法 1. 类的包名和类存放的路径可以不匹配。 2. 行尾分号可选,但是如果多条语句在同一行,需要使用分号分隔...

  • JavaScript基础知识

    JavaScript 语句: 概念: JavaScript 语句以(;分号)结尾。 例子 :document.ge...

  • JavaScript学习笔记

    ### JavaScript学习笔记 ##### JavaScript`语句` - 分号可在一行写多个语句; - ...

  • 6.了解分号插入的局限

    JavaScript能够离开语句结束分号工作 JavaScript分号插入规则 分号仅在}标记之前、一个或多个换行...

  • runoob js第二天

    JavaScript语句 JavaScript语句是发给浏览器的指令。 分号;用于分隔语句,在每条可执行的语句结尾...

  • JavaScript语句

    1.分号:分号用于分隔JavaScript语句 通常我们在每条可执行语句结尾添加分号,使用分号的另一处是一行中编写...

  • javaScript 基础

    初学JavaScript基础 ASI 自动分号插入(ASI)的目标是使分号对行结束来来说是可选的。引入自动分号插入...

  • JavaScript基本语法

    JavaScript 的基本语法 1、语句 JavaScript区分大小写,每条语句以分号;结尾,用大括号{}表示...

网友评论

      本文标题: JavaScript 语句行尾的可选分号

      本文链接:https://www.haomeiwen.com/subject/vofruttx.html