javaScript中什么时候用分号“;”?

参考(一)译文:JavaScript分号使用指南

参考(二)《JavaScript权威指南》(第六版)P30

(1)在JavaScript中如果语句各自独占一行,通常可以省略语句之间的分号(程序结尾或右花括号“}”之前的分号也可以省略)。

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

        var aa=3console.log(a)

JavaScript将其解析为:

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

JavaScript给第一行换行处添加了分号,因为如果没有分号,JavaScript就无法解析代码var a a。第二个a可以当做一个语句“a;”,但JavaScript并没有给第二行结尾填补分号,因为它可以和第三行内容一起解析为“a=3;”。

依赖JavaScript的自动填补分号很可能导致一些意想不到的问题:

        var y=x+f(a+b).toString()

看起来像两条独立的语句,但是第二行的圆括号和第一行的f组成一个函数调用,JavaScript会把这段代码看做:

var y=x+f(a+b).toString();

而这段代码的本意并不是这样。为了能让上述代码解析为两条不同的语句,必须手动填写行位的显式分号。

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

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

        returntrue;

JavaScript会解析成

  return;true;

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

        x ++y

将会解析为

x;++y

而不是

x++;y

javaScript中什么时候用分号;相关推荐

  1. javascript 分号_让我们谈谈JavaScript中的分号

    javascript 分号 要使用它们,还是不使用它们- (To use them, or not to use them-) Semicolons in JavaScript divide the ...

  2. 关于javascript中的(;),为可选的分号

    在阅读jQuery源码的时候,发现一个小东西神出鬼没,它就是(;).因此,为确保阅读的流畅性,从JQuery中跳出来,折腾一下javascript中的语句结束分隔符(注:这自是个人理解中的称呼),下面 ...

  3. html分号的作用,JavaScript 中的分号(;) – JavaScript 完全手册(2018版)

    注:本文为 < JavaScript 完全手册(2018版) >第14节,你可以查看该手册的完整目录. JavaScript 中的分号是可选的. 我个人偏好是我的代码中避免使用分号,但也有 ...

  4. JavaScript 中语句的分号及webstorm对其的设置

    在 C 语言中,分号是语句结束的标志,在语句结束的地方一定要以分号结束.而 JavaScript 的分号却是可选的,若语句都各占一行,则可以省略分号.这是因为 JavaScript 中的 ASI 机制 ...

  5. JavaScript中分号;的使用注意

    在javaScript中分号是可以选用的,解释器会在一定条件下自动补全分号. 类似于(实例一): function myFunction(a) {var num = 10 return a * num ...

  6. JavaScript中 for、for in、for of、forEach等使用总结

    在JavaScript中,我们经常需要去循环迭代方法操作数组对象等,常见等循环方法有 for.for in.for of.forEach等. 1.for循环 for循环是最基础常见的一种循环,圆括号中 ...

  7. 为什么要避免使用JavaScript中的递增(“++”)和递减(“ - ”)运算符?

    本文翻译自:Why avoid increment ("++") and decrement ("--") operators in JavaScript? O ...

  8. Javascript中的陷阱大集合【译】

    参考:http://www.2cto.com/kf/201111/111203.html 昨天晚上在自己的个人技术博客上翻译了一篇有关Javascript的文章,今天想想还是把它投稿到博客园吧,大家可 ...

  9. 现代JavaScript中的精美图案:制冰厂

    I've been working with JavaScript on and off since the late nineties. I didn't really like it at fir ...

  10. JavaScript中的运算符和语句

    一.JavaScript的运算符 a.基本的算术运算符(+.-.*./.%) -.*./.%运算符会在必要的时候将操作数转换为数字,无法转换成数字的操作数将会转换成NaN,相应的运算结果也是NaN. ...

最新文章

  1. 最明的int和Integer的区别
  2. Nginx静态资源盗链的效果展示
  3. spring 异常捕获异常_使用Spring跟踪异常–第2部分–委托模式
  4. isnull mysql_mysql isnull用法讲解
  5. 为什么有的安卓手机会越用越卡?
  6. Python界面程序实例:按钮漂移,用Python小套路来撩女神
  7. SpringMvc表单使用
  8. 3.数据结构 --- 栈和队列
  9. Python使用matplotlib可视化模拟学生课程分数雷达图
  10. 最新免费纯净版PE制作工具V2.1【更新说明】
  11. Jmeter之接口测试流程详解
  12. 遥感图像预处理-大气校正
  13. 根据几何定义使用计算机编程求定积分的值
  14. IT行业里哪些岗位热门又高薪?
  15. 人人网相册加密密码破解
  16. Lab2 Defusing a Binary Bomb
  17. 给已经创建的容器暴漏端口 添加新的端口
  18. 7的整除特征 三位一截_小学数学竞赛七、数的整除特征(一)
  19. 苹果外接屏幕鼠标移动方向问题
  20. 状语从句不是简单句_简单句、复合句Gloria总结

热门文章

  1. LA 4490 Help Bubu
  2. css单线边框_css中的border-collapse属性如何设置表格边框线?(代码示例)
  3. Taro从零创建微信小程序步骤
  4. html embed自动播放,html embed标签怎么用
  5. C++银行账户管理程序1
  6. 非常哇塞的 SpringBoot性能优化长文!
  7. 怎么解除计算机教室的游戏限制,多妙招解除极域电子教室的控制权限
  8. java后台数据传到前台的流程_java serlve后台数据传到前台
  9. 麻了!35岁奥地利总理辞职当码农
  10. Go 语言入门系列:指针的基本应用