1 结论

在 C 语言中,分号是语句结束的标志,在语句结束的地方一定要以分号结束。而 JavaScript 的分号却是可选的(optional),若语句都各占一行,则可以省略分号。为增强代码可读性,减少歧义,建议在表达式末尾使用分号。多个表达式之间,也可以使用逗号分隔。

2 可以省略分号的情形

一条语句代表着一条javascript命令,通常以分号(;)结尾。因此,javascript的分号(;)是用于分隔语句的符号。
可将分号“;”省略的几种情形:

(1)语句各自独占一行,通常可以省略结尾的分号;
(2)程序结束或者右花括号(})之前的分号也可以省略;

javascript懒汉原则:不添加分号“;”就可以顺利解析的语句,不会主动添加分号(;)再进行解析。javascript只有在缺少分号就无法正确解析代码的时候,javascript才会填补分号。

语句各自独占一行,通常可以省略结尾的分号。
a=3;
b=4;
那么a=3后面的;可以省略
a=3; b=4;
那么a=3后面的分号不能省略。此时,写成a=3, b=4也可

例外情形:第一个例外是在涉及return、break和continue语句的场景中,如果这三个关键字后面紧跟着换行,javascript则会在换行处填补分号。

第二个例外是在涉及“++”和“–”运算符的时候,这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。如果将其用做后缀表达式,它和表达式应该在同一行。否则,行尾将填补分号,同时“++”或“–”姜维作为下一行代码的前缀操作符,并与之一起解析。

3 ASI 机制(Automatic semicolon insertion)

JavaScript 中的 ASI 机制,允许我们省略分号。ASI 机制不是说在解析过程中解析器自动把分号添加到代码中,而是说解析器除了分号还会以换行为基础按一定的规则作为断句的依据,从而保证解析的正确性。*

ASI 规则
1 新行并入当前行构成非法语句时,自动插入分号
2 continue, return, break, throw 后自动插入分号
例如:

return
a+b

return;
a+b

的含义是一样的,都是返回空值,而不是返回a+b;
3 ++, – 后缀表达式作为新行开始,会在行首自动插入分号
4 代码块的最后一个语句会自动插入分号

4 注意事项

    不要将 ++ 或 -- 放在同一行如果 return 后有参数,不要将参数放在独立的行不要将括号的开始放在新的一行,理由为上一条

js行结尾,是否必须写分号相关推荐

  1. JavaScript中到底要不要写分号呢?

    在我们介绍 JavaScript 语法的全局结构之前,我们先要探讨一个语言风格问题:究竟要不要写分号? 这是一个非常经典的口水问题,"加分号"党和"不写分号"党 ...

  2. 在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)

    哎,够背的,最后4张图怎么调整都很小,看不清楚,所以大家还是看我这篇文章吧在javascript中使用el表达式(图片清晰版,有图有真相),这篇文章的图片可以正常看清楚,跟我这篇文章是一样的内容! 有 ...

  3. JS高级群的日常!写一个从10到0的倒计时,用console.log打印,不可以用 setInterval!本来说好的研究avalonJS最后演变成了看着大神在那边互相比拼实力。。...

    JS高级群的日常!写一个从10到0的倒计时,用console.log打印,不可以用 setInterval!本来说好的研究avalonJS最后演变成了看着大神在那边互相比拼实力.. 小森 执行一个函数 ...

  4. 怎样用原生js配合css的transition写个无缝滚动

    之所以想要写原生js配合css转换的无缝滚动,是因为之前在简书上看到一哥们写的一篇文章,说是在网上找了一堆js配合css transition属性写的轮播插件,可惜没有无缝的效果,结果他用原生js重写 ...

  5. python爬虫都能干什么用_5 行代码就能写一个 Python 爬虫

    欢迎关注我的公众号:第2大脑,或者博客:高级农民工,阅读体验更好. 摘要:5 行代码就能写一个 Python 爬虫. 如果你是比较早关注我的话,会发现我此前的大部分文章都是在写 Python 爬虫,前 ...

  6. Node.js 单元测试:我要写测试 - Mocha - Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率

    -------------------------------------- 单元测试Express/NodeJs 个人理解, 1,如果不是测试http请求的单元测试,用Mocha, Chai等基本够 ...

  7. 【学习笔记】Part1·JavaScript·深度剖析-函数式编程与 JS 异步编程、手写 Promise(二、JavaScript 异步编程)

    [学习笔记]Part1·JavaScript·深度剖析-函数式编程与 JS 异步编程.手写 Promise(课前准备) [学习笔记]Part1·JavaScript·深度剖析-函数式编程与 JS 异步 ...

  8. C++ 中的多线程的使用和线程池建设。150行代码,手写线程池

    C++ 11 引入了 std::thread 标准库,方便了多线程相关的开发工作. 说到多线程开发,可不仅仅是创建一个新线程就好了,不可避免的要涉及到线程同步的问题. 而保证线程同步,实现线程安全,就 ...

  9. c 语言500行小游戏代码,500行代码使用python写个微信小游戏飞机大战游戏.pdf

    500行行代代码码使使用用python写写个个微微信信小小游游戏戏飞飞机机大大战战游游戏戏 这篇文章主要介绍了500行代码使用python写个微信小游戏飞机大战游戏,本文通过实例代码给大家介绍的非常详 ...

  10. python代码示例500行源代码-500行代码使用python写个微信小游戏飞机大战游戏

    这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手. 帮助蹲厕族.YP族.饭圈女孩在无聊之余可以有一样东西让他们振作起来!让他们的左手 / 右 ...

最新文章

  1. 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画
  2. python学习笔记:easygui的简单示例
  3. shell脚本删除linux中的文件
  4. java数据结构有哪些_java有哪些数据结构?
  5. Opportunity workflow debug
  6. 玩转keybd_event
  7. 推荐一款优雅的日历控件
  8. Python机器学习:梯度下降法009更多讨论
  9. 第八:Pytes中的fixture大解剖(二)
  10. 阿里云 ssh 登陆请使用(公)ip
  11. Oracle的SQLPLUS命令
  12. Android 签名问题记录MinSdkVersionException: Failed to determine APK‘s minimum supported platform version
  13. Oracle数据库驱动包ojdbc7.jar,ojdbc8.jar
  14. linux-centos 7 系统设置时区及同步时间
  15. 【Python】Pyside6简易版教程
  16. Python爬虫学习实战
  17. 校园共享单车的发展为何经久不衰?—以湖南科技大学为例
  18. java实现数据同步
  19. 中瀛手机维修管理软件 3gp转换软件
  20. Arch Linux 添加 BlackArch 镜像源

热门文章

  1. 咸鱼Maya笔记—Maya 多边形建模
  2. 如何给图片添加文字?图片加字功能怎么使用?
  3. api与密度转换公式_原油API度与比重换算表摄氏15
  4. 山地车的结构及骑行注意事项
  5. 中继器制作联动下拉列表
  6. 中继器系列:中继器增删改查
  7. 文本数据挖掘一般步骤
  8. “不用着急,慢慢来”,英语怎么说?
  9. 软回车和硬回车的区别
  10. 使用ps工具进行图片分析