《JavaScript权威指南》读书笔记1 可选的分号

绝大多数编程语言以分号结束一条语句,但在JavaScript中除非你多条语句写在同一行必须用分号隔开,否则分号是可选的。JavaScript在无法正确解析代码的时候会自动填补分号,如:

var a
a
=
3
console.log(a)

JavaScript会将其解析为:var a;a=3;console.log(a)

但是自动填补分号有很多例外情况,可能并不会如你想像般工作,比如下面的情况:

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

JavaScript会看做:var y=x+f(a+b).toString();,这明显不是你想像的:var y=x+f;(a+b).toString();

再看下面一种情况:

return
true

JavaScript会看做:return;true;,也不是你想像中的:return true;

下面的代码段也是出人意料的:

x
++
y

JavaScript会看做:x;++y;,而不是:x++;y;

总结如下

  1. 如果一条语句以“(”、“[”、“/”、“+”或“-”开始,那么它极有可能和前一条语句合在一起解析。
  2. 在return、break和continue和随后的表达式之间不能有换行。
  3. 涉及“++”和“--”运算符的时候,可以作为表达式的前缀,也可以当做表达式的后缀。如果将其用做后缀表达式,它和表达式应当在同一行。否则,行尾将填补分号,同时“++”或“--”将会作为下一行代码的前缀操作符并与之一起解析。

对于99%的人来说,这些知识都是无用的,因为很少会有人不写分号,但是如果我们不幸遇到了此类代码(希望我们永远都不会遇到),这些知识有利于我们读懂它们。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前端07班 王语句JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是...
    ea203453e188阅读 4,436评论 0 4
  • 第三章 类型、值和变量 1、存取字符串、数字或布尔值的属性时创建的临时对象称做包装对象,它只是偶尔用来区分字符串值...
    坤少卡卡阅读 3,868评论 0 1
  • 语句 JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。 ...
    米塔塔阅读 3,294评论 1 10
  • 标签: 我的笔记 ---学习资料:http://javascript.ruanyifeng.com/ 1. 导论 ...
    暗夜的怒吼阅读 4,290评论 0 1
  • 微风缱绻湖黛青, 轻烟氤氲许柔情。 红妆巧抹俏佳人, 千山万水我与卿。
    panjw阅读 1,283评论 0 3

友情链接更多精彩内容