JavaScript 分号使用总结

没有应该不应该,只有你自己喜欢不喜欢。JavaScript 语法长得 C-like 不代表它本质上和 C 是一类语言,所有直觉性的 “当然应该加分号” 都是保守的、未经深入思考的草率结论。后来新设计的语言里可选分号的多得去了,光是 “可以加分号但是大家都不加” 的语言就有:Go, Scala, Ruby, Python, Swift, Groovy...
至于说 “很难总结什么时候加不加”,其实真的很简单。真正会导致上下行解析出问题的 token 有 5 个:括号(),方括号[],正则开头的斜杠/,加号+,减号-。我还从没见过实际代码中用正则、加号、减号作为行首的情况,所以总结下来就是一句话:一行开头是括号或者方括号的时候加上分号就可以了,其他时候全部不需要。其实即使是这两种情况,在实际代码中也颇为少见。
另外,restricted production 这个东西(也就是导致 return 后面换行会自动插入分号的机制),不管你加不加分号你都是得搞懂了才能不被坑的,和加不加分号没有什么关系。
更多细节,可以看我曾经给过的一个 talk:Hacking Semicolons by Evan You
最后,上点代码好了,Vue.js 的代码全部不带分号:yyx990803/vue · GitHub
另外说到工具,我确实写了一个,全自动帮你批量添加或者删除分号:yyx990803/semi · GitHub 做成 Git pre-commit hook,选择你自己喜欢的风格就可以。

总结:

1. 自己书写代码的时候: 一条完整的语句加分号, 函数声明不加分号

// 1.  加分号的语句
var jason = "zeng";
var eason = function () {
      // 其他语句...
};
(function($) {
      // 其他语句 ...
})(jQuery);
++a;
b++;

// 2. 不加分号的声明
function myfunction() {
      // 其他语句 ...
}

2. 结合别人代码的时候: 发现他人有不加分号的特点的时候, 自己在在语句前面加分号

;(function($) {
     // 其他语句 ...
})(jQuery);

;++a;

3. return 不能单独占一行

var g1 = function () {
     return "test";
}

var g2 = function () {
     return {
        a: 1,
        b: 2
    }
}

var g3 = function () {
     return [
         "one",
         "two"
     ];
}        

原文地址:https://www.cnblogs.com/mouseleo/p/9175897.html

时间: 2024-11-14 12:27:11

JavaScript 分号使用总结的相关文章

【转】javascript 分号问题

javascript的分号代表语句的结束符,但由于javascript具有分号自动插入规则,所以它是一个十分容易让人模糊的东西,在一般情况下,一个换行就会产生一个分号,但实际情况却不然,也就是说在javascript中换行可能产生分号,也可能不产生,是否自动插入分号,主要看上下行.所以即使是经验丰富的程序员,有时候也会头大. 在 ECMAScript 中对分号自动插入规则也有相应的解释:空语句,变量语句,表达式语句,do-while 语句,continue 语句,break 语句,return

273 JavaScript分号问题

<!DOCTYPE html> 01_分号问题 原文地址:https://www.cnblogs.com/jianjie/p/12240697.html

对前端质量保障的思考

我们时时在踩坑,有时也忍不住埋怨前人给我们留下了无数的坑,可回头想想,自己是不是也在挖坑等别人踩... 上次听 赵海平 的讲座,他提到 Facebook 没有测试人员,以前和现在都没有,以后也不打算有.还提到上线之后就开发者坐在系统前等着,只要有bug,系统能够在五分钟之内检测到,并提供快捷方式修复.我惊叹的是他们能够在五分钟之内监控到所有的问题,实时回馈并及时修复. 当然在探讨质量保障这个话题前,我们需要明确几个关键点:编码前.提交代码.测试.上线.回滚.上线后.针对这几个点,下面我谈一谈我的

响应式设计框架的优缺点

聚焦Bootstrap 3和Foundation 5,让我们一起来分析使用其中一种框架构建自己的网站的优势与短板. 浏览器兼容性 浏览器调试所花的时间有时赶上了制作网站本身所花的时间.如果你可以减少调试浏览器所花的时间,那么就是在为客户节约成本(当然也是在保护的你的头发不那么早就掉光). 响应式设计框架是一个基于在各种浏览器调试成功的框架.使用这些框架,可以大大减少建设网站时所耗费的时间(测试次数的多少取决于你定制了多少框架的内容,如果你仅仅只是改变了几个颜色而已,那么调试的次数就非常少:如果你

软件测试系列--软件测试基础

1.什么是软件测试? **软件测试是一个过程,包含了若干活动,运行软件进行测试只是活动之一 **进行软件测试可以人工方式也可以借助于工具 **进行软件测试可以运行软件也可以不运行软件 **软件测试的目的不仅仅是为了发现错误 2.软件测试的目的? 软件测试的目的有三个,分别是:证明.检测.预防. 证明: (1)获取系统在可接受风险范围内可用的信心; (2)尝试在非正常情况和条件下的功能和特性; (3)保证一个工作产品是完整的并且可用或者可被集成. 检测: (1)发现缺陷.错误和系统不足; (2)定

设计师不应该错过的响应式设计框架

Ethan Marcotte称响应式设计是基于网格建立一个网站.Marcotte定义这项技术后,响应式设计框架开始出现,主要是css和JavaScript的结合.许多框架都是开源的,可以免费下载和快速定制. 当下最火热的框架就是Bootstrap和 Foundation了. 随着响应式设计框架越来越火,一个巨大的争议出现了:为什么一个专业的设计师还需要用这些框架呢? 许多人宣称响应式框架是可怕的,因为他们根本不懂一点点html和css的知识.下面是另一些具有标志性的反对使用框架的意见: 设计师可

ECMAScript 5.0 基础语法(上)

银子: 一般来说,一门编程语言的基础语法都是大同小异的.比如,python的基础语法,包括:数据类型,变量,作用域,运算符,流程控制(if...else...语句),循环,编码,数据类型的操作(增删改查.切片),常用的内置函数,常用的内置模块,以及规范化的开发结构.JavaScript也是类似的.ECMAScript就是JavaScript最基础的语法. 一.JS是啥? 一个网页开发,主要用的语言组合是html+css+JS,其中,htnl用来搭建页面的结构(控件,段落,标签,链接什么的),cs

JavaScript语法中分号使用的细节

关于JavaScript中可选分号的问题有几个细节要注意: 一般来说,JavaScript和其他语言一样都是使用分号,将语句隔开,但在JavaScript中,如果语句各自独立一行,有时也可以省略分号的 细节1: 如果当前语句和随后的非空格字符不能当成一整体来解析的话,JavaScript就在当前语句行结束处自动填补分号 var a a = 3 console.log(a); JavaScript将上述代码解析为: var a; a=3; console.log(a); 第一行代码 var a自动

JavaScript 语句后应该加分号么?

分号加与不加完全取决于个人习惯,但为了代码稳定(解析出错)还是建议使用分号断句. JavaScript自动加分号规则:1.当有换行符(包括含有换行符的多行注释),并且下一个token没法跟前面的语法匹配时,会自动补分号.2.当有}时,如果缺少分号,会补分号.3.当程序源代码结束时,如果缺少分号,会补分号.结论:1.在return.break.continue.后自增.后自减五种语句中,换行符可以完全替代分号的作用.2.var if do while for continue break retu