文档章节

JavaScript权威指南2-可选的分号

August1996_
 August1996_
发布于 2016/04/03 21:00
字数 720
阅读 20
收藏 0

    和其他编程语言一样,JavaScript使用分号(;)将语句分割.这堆增强代码的可读性和间接性是非常重要的:缺少分隔符,一条语句的结束就成了下一条语句的开始,反之亦然.

    在JavaScript中,如果局域各自独占一行,通常可以省略语句之间的分号(程序结尾或者右花括号之前的分号也可以省略).许多JavaScript程序员使用分号来明确标记语句的结束(个人推荐).而另一种风格就是,在任何可以省略分号的地方都将其省略,只有在不得不用的时候才使用分号.不管采用那种编程风格,关于JavaScript中可选分号的问题有几细节需要注意.

    1.

        考虑下面代码,因为两条语句用两行书写,第一个分号是可以省略掉的:

a = 3;
b = 4;

        如果按照如下格式书写,第一个分号则不能省略掉

a = 3;b = 4;

        注意:JavaScript并不是在所有换行都填补分号:只有缺少分号无法正确解析代码的时候,JavaScript才会填补分号.换句话说就是,如果当前语句和随后的非空格字符不能当成一个整体解释的话,JavaScript就在当前语句行结束处填补分号.如:

var a
a
=
3
console.log(a)

        JavaScript将其解释为:        

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

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

        这种代码过多使用不但使人难以理解,而且使人逻辑混乱.考虑下面例子:

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

        JavaScript不会给第一行加上分号,因为第一行跟第二行似乎能后合并成  

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

        显然这并不是我们想要的结果,所以必须手动加上分号.


    2.

        当在修改别人的代码的时候,因为不知道前面编码者的风格,所以很多程序员保守地在自己语句前面加上分号,这样就能保证前面的代码能正常执行,而保证新的代码不和旧的代码合并形成歧义.如上面的例子:

 var y = x + f    //上个编码者的代码
 ;(a+b).toString()    //加入的新代码


    3.

        1.return break continue所在行JavaScript一定会加上分号,例如;

return true

            会被解析成

return;
true;

        

    2.涉及"++"和"--"运算符时,直接上例子:

x
++
y

  会被解析为

x;
++y;

而不是

x++;
y;

 




    

© 著作权归作者所有

August1996_
粉丝 2
博文 51
码字总数 29055
作品 0
湛江
程序员
私信 提问
写javascript时要不要省略分号

在打算写这篇文章之前,我是一个分号党,在写这篇文章之后,转为了无分号党。之前是写分号是编辑器语法较检所养成的强迫症,现在观念的转变,是因为看了不少大神的讨论后,觉得javascript语句...

临江仙卜算子
2018/06/27
48
0
《JavaScript权威指南》笔记(四)

第四篇笔记的内容主要涉及:javascript中的各种语句。 1. switch语句: (1)其中的case表达式采用===匹配,而不是==做匹配 (2)习惯上将default标签放在switch主体的结尾,但实际上可以放在...

小微
2012/08/28
351
2
一个合格的前端工程师必看的书籍

以我的经验,大部分技术,熟读下列四类书籍即可。 入门,用浅显的语言和方式讲述正确的道理和方法,如head first系列 全面,巨细无遗地探讨每个细节,遇到疑难问题时往往可以在这里得到理论解...

财富江湖
2014/12/23
1K
1
前端开发,从菜鸟到大牛的取经之路

以我的经验,大部分技术,熟读下列四类书籍即可。 入门,用浅显的语言和方式讲述正确的道理和方法,如head first系列 全面,巨细无遗地探讨每个细节,遇到疑难问题时往往可以在这里得到理论解...

modernizr
2014/05/05
2.6K
14
OSChina 第 21 期高手问答 —— ExtJS

OSCHINA 本期高手问答我们请来了《Ext JS权威指南》一书的作者 —— @黄灯桥 为大家解答关于 ExtJS 使用方面的各种问题。 黄灯桥(网名:上将军),资深Web技术专家,拥有10余年工作经验,一...

红薯
2012/06/24
6.9K
98

没有更多内容

加载失败,请刷新页面

加载更多

新架构、新角色:TiDB Community Upgrade!

作者:Jian Zhang 经过几年的发展,TiDB 社区已经逐渐成熟,但是随着社区的发展壮大,我们逐渐感受到了现在社区架构上的一些不足。经过一系列的思考和总结,我们决定升级和调整目前社区组织架...

TiDB
25分钟前
5
0
jquery qrcode库提示not function

jquery qrcode 这个库能用,但是必须在初始化的时候,官方给的使用方法是 引入qrcode的库文件后,在js中写以下 html <div id="qrcode"></div> js jQuery('#qrcode').qrcode({ render: ......

shikamaru
29分钟前
10
0
MySQL数据库去重的简单方案

利用 distinct 对需要处理的字段进行去重 select distinct 字段名 from 表名 利用group by select * from 表名 group by 字段名 利用having select * from 表名 group by 字段名 having 字段...

FeanLau
32分钟前
9
0
字符串转换成整数

实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该...

蔚蓝_晴天
43分钟前
8
0
Eureka客户端续约及服务端过期租约清理源码解析

在之前的文章:EurekaClient自动装配及启动流程解析中,我们提到了在构造DiscoveryClient时除了包含注册流程之外,还调度了一个心跳线程: scheduler.schedule( new Ti...

Java学习录
54分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部