重学前端
程劭非(winter)
前手机淘宝前端负责人
立即订阅
32969 人已学习
课程目录
已完结 58 讲
0/4登录后,你可以任选4讲全文学习。
开篇词+学习路线+架构图 (3讲)
开篇词 | 从今天起,重新理解前端
免费
明确你的前端学习路线与方法
列一份前端知识架构图
模块一:JavaScript (15讲)
JavaScript类型:关于类型,有哪些你不知道的细节?
JavaScript对象:面向对象还是基于对象?
JavaScript对象:我们真的需要模拟类吗?
JavaScript对象:你知道全部的对象分类吗?
JavaScript执行(一):Promise里的代码为什么比setTimeout先执行?
JavaScript执行(二):闭包和执行上下文到底是怎么回事?
JavaScript执行(三):你知道现在有多少种函数吗?
JavaScript执行(四):try里面放return,finally还会执行吗?
JavaScript词法:为什么12.toString会报错?
(小实验)理解编译原理:一个四则运算的解释器
JavaScript语法(预备篇):到底要不要写分号呢?
JavaScript语法(一):在script标签写export为什么会抛错?
JavaScript语法(二):你知道哪些JavaScript语句?
JavaScript语法(三):什么是表达式语句?
JavaScript语法(四):新加入的**运算符,哪里有些不一样呢?
模块二:HTML和CSS (16讲)
HTML语义:div和span不是够用了吗?
HTML语义:如何运用语义类标签来呈现Wiki网页?
CSS语法:除了属性和选择器,你还需要知道这些带@的规则
HTML元信息类标签:你知道head里一共能写哪几种标签吗?
CSS 选择器:如何选中svg里的a元素?
CSS选择器:伪元素是怎么回事儿?
HTML链接:除了a标签,还有哪些标签叫链接?
CSS排版:从毕升开始,我们就开始用正常流了
HTML替换型元素:为什么link一个CSS要用href,而引入js要用src呢?
HTML小实验:用代码分析HTML标准
CSS Flex排版:为什么垂直居中这么难?
CSS动画与交互:为什么动画要用贝塞尔曲线这么奇怪的东西?
HTML语言:DTD到底是什么?
CSS渲染:CSS是如何绘制颜色的?
CSS小实验:动手做,用代码挖掘CSS属性
HTML·ARIA:可访问性是只给盲人用的特性么?
模块三:浏览器实现原理与API (9讲)
浏览器:一个浏览器是如何工作的?(阶段一)
浏览器:一个浏览器是如何工作的?(阶段二)
浏览器:一个浏览器是如何工作的(阶段三)
浏览器:一个浏览器是如何工作的?(阶段四)
浏览器:一个浏览器是如何工作的?(阶段五)
浏览器DOM:你知道HTML的节点有哪几种吗?
浏览器CSSOM:如何获取一个元素的准确位置
浏览器事件:为什么会有捕获过程和冒泡过程?
浏览器API(小实验):动手整理全部API
模块四:前端综合应用 (5讲)
性能:前端的性能到底对业务数据有多大的影响?
工具链:什么样的工具链才能提升团队效率?
持续集成:几十个前端一起工作,如何保证工作质量?
搭建系统:大量的低价值需求应该如何应对?
前端架构:前端架构有哪些核心问题?
特别加餐 (9讲)
新年彩蛋 | 2019,有哪些前端技术值得关注?
用户故事 | 那些你与“重学前端”的不解之缘
期中答疑 | name(){}与name: function() {},两种写法有什么区别吗?
答疑加餐 | 学了这么多前端的“小众”知识,到底对我有什么帮助?
加餐 | 前端与图形学
加餐 | 前端交互基础设施的建设
期末答疑(一):前端代码单元测试怎么做?
期末答疑(二):前端架构中,每个逻辑页面如何可以做到独立发布呢?
加餐 | 一个前端工程师到底需要掌握哪些技能?
尾声 (1讲)
尾声 | 长风破浪会有时,直挂云帆济沧海
重学前端
登录|注册

JavaScript语法(预备篇):到底要不要写分号呢?

winter 2019-03-23
你好,我是 winter。
在我们介绍 JavaScript 语法的全局结构之前,我们先要探讨一个语言风格问题:究竟要不要写分号。
这是一个非常经典的口水问题,“加分号”党和“不写分号”党之间的战争,可谓是经久不息。
实际上,行尾使用分号的风格来自于 Java,也来自于 C 语言和 C++,这一设计最初是为了降低编译器的工作负担。
但是,从今天的角度来看,行尾使用分号其实是一种语法噪音,恰好 JavaScript 语言又提供了相对可用的分号自动补全规则,所以,很多 JavaScript 的程序员都是倾向于不写分号。
这里要特意说一点,在今天的文章中,我并不希望去售卖自己的观点(其实我是属于“加分号”党),而是希望比较中立地给你讲清楚相关的知识,让你具备足够的判断力。
我们首先来了解一下自动插入分号的规则。

自动插入分号规则

自动插入分号规则其实独立于所有的语法产生式定义,它的规则说起来非常简单,只有三条。
要有换行符,且下一个符号是不符合语法的,那么就尝试插入分号。
有换行符,且语法中规定此处不能有换行符,那么就自动插入分号。
源代码结束处,不能形成完整的脚本或者模块结构,那么就自动插入分号。
这样描述是比较难以理解的,我们一起看一些实际的例子进行分析:
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《重学前端》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(30)

  • 本末倒置っ
    几年前,各种各样的书大致上都推荐你加分号。
    几年前,曾经由于构建工具有一些问题,导致不加分号可能会出问题。
    jquery依然留着分号,vue源码不用分号。

    尤雨溪曾经在知乎说:真正会导致上下行解析出问题的 token 有 5 个:括号,方括号,正则开头的斜杠,加号,减号。我还从没见过实际代码中用正则、加号、减号作为行首的情况,所以总结下来就是一句话:一行开头是括号或者方括号的时候加上分号就可以了,其他时候全部不需要。
    哦当然再加个反引号。

    可是写分号已经习惯了,又何必花力气改习惯去掉它。不加只要不写出bug,也很好。
    反正分号有和没有,对eslint fix来说,只是瞬间的事。。。
    2019-03-27
    34
  • Scorpio
    写了几年一直不写分号。。。等出了问题再说吧。。。我懒。。
    2019-03-25
    8
  • Tony
    一直有加分号的习惯,一是不写分号我有强迫症,二是不写分号webstorm会提示
    2019-04-19
    5
  • Dylan-Tseng
    个人觉得还是加分号比较好,至少能保证加上去之后今天老师说的问题都能够得到我们想要的答案。
    2019-03-25
    4
  • 彧豪
    另外我个人也是不写分号,然后使用的是双引号,诸位不写分号党,如果想要写上分号,用的eslint和vs code那么可以这么搞:
    1. eslintrc中加入这条规则:"semi": ["error", "always"]
    2. vsc中设置一下:"eslint.autoFixOnSave": true
    此时,你保存的时候,vsc会自动帮你在需要加分号的地方加上分号
    2019-03-26
    3
  • 老实人
    采用eslint是不会写的,不采用会写上
    2019-03-25
    3
  • 陆同春
    react源码规范需要分号
    2019-03-23
    3
  • jacklovepdf
    总结一下,不加分号可能会有问题,加分号一定不会有问题。那为什么不加?
    2019-06-24
    2
  • joker
    现在的编程环境根本不需要担心。格式代码化或eslint 都可以避免这些问题。
    2019-04-29
    1
  • Ranjay
    eslint是你自己配置的。。。
    2019-04-15
    1
  • Geek_0bb537
    自动补齐和自动驾驶一样 不特么靠谱!稳妥点 养成写分号的习惯!
    2019-04-15
    1
  • 醉月
    用了cli写vue以后就很少用分号了
    以前学js写原生的时候强迫症一样写分号
    这东西就是见仁见智
    前端真的是娱乐圈,,
    为个分号还能争起来。
    2019-03-25
    1
  • Scorpio
    写了几年一直不写分号。。。等出了问题再说吧。。。我懒。。
    2019-03-25
    1
  • stanny
    antd源码有分号 两个空格缩进
    2019-03-24
    1
  • stanny
    koa源码有分号
    2019-03-24
    1
  • 四叶草
    启用了eslint检查都会要把分号去掉,这样编译后不是可能有问题?
    2019-03-23
    1
  • ctrlcctrlv
    加上分号,就不用考虑课程中涉及到的问题了
    2019-11-18
  • Mazin🍃
    还是加上吧.起码语句的清晰度上一个等级
    2019-10-22
  • Smallfly
    以正则表达式开头的语句中示例代码运行是会报错的~
    2019-10-18
  • 沉迷学习,日渐消瘦🔥
    讲的很不错,我平时都会写分号,习惯了
    2019-09-02
收起评论
30
返回
顶部