在JavaScript中,每句结尾是否加分号
js标准风格禁止使用分号,不过有前置条件:不要使用(, [, or
等作为一行的开始,否则在没有分号的情况下,代码压缩后会导致报错。
// shuffleArrayFisherYates 洗牌算法。
function shuffleArrayFisherYates(array) {for (let i = array.length - 1; i > 0; i--) {// 下面两行必须添加分号,否则语法错误let j = Math.floor(Math.random() * (i + 1));[array[i], array[j]] = [array[j], array[i]];}return array;
}
条条框框是为了更好地完成代码,当条条框框出现反效果时,我们应当灵活变通,甚至修改完善条条框框。
在js标准风格中,也记录了禁止使用分号的解释:这并不是编译器要求不加分号,或者语法上要去除分号,而是一些技术大拿在发现解释器能自动调价分号后,给出的建议。为了统一,大拿们建议在前置条件出现时,该行本身的标记前加上分号,通过这种方式,即使其他地方没有使用分号,这一行也能免受错误解析。
摘录js标准风格中禁止使用分号的解释
自动分号插入是JavaScript最具争议的语法特性之一。关于它也有许多误解。
一些JavaScript程序员在每个语句的末尾使用分号,而有些人仅在严格需要的地方使用它们。大多数人采取的是两者之间的做法,还有少数人甚至故意添加额外的分号,作为一种风格。
即使你在每个语句末尾使用分号,有些构造的解析方式也并不明显。无论你对分号的使用有什么偏好,你必须了解规则才能专业地编写JavaScript。如果你记住几个这里解释的简单规则,你将能够理解你可能遇到的任何程序是如何被解析的,并且将成为JavaScript自动分号插入(ASI)的专家。
是否应该省略可选的分号?答案是个人偏好的问题,但应该基于知情选择,而不是对未知语法陷阱或不存在的浏览器错误的模糊恐惧。如果你记住了这里提供的规则,你就能够做出自己的选择,并轻松阅读任何JavaScript代码。
如果你选择在可能的情况下省略分号,我的建议是在任何以这些标记之一开头的语句的开括号或方括号之前立即插入分号,或者在你写这样的语句时,如果它以算术运算符标记 " / “、” + “或” - " 开头,也要这么做。
无论你是否省略分号,你必须记住限制性规则(return、break、continue、throw,以及后缀增量和减量运算符),并且你可以随意在其他地方使用换行符,以提高代码的可读性。