在语句之间使用逗号是否安全?

时间:2014-12-03 10:06:18

标签: javascript expression

很多开发人员都知道在定义变量时,可以使用逗号分隔:

var a = 1,
    b = 2,
    c = 3;

但是在编写简单的语句时,使用逗号而不是分号是否安全?

var a, b, c;

a = 1,    // instead of a = 1;
b = 2,    // b = 2;
c = 3;    // c = 3;

当我在浏览器中测试时,它工作正常。但我似乎无法在任何地方找到它的用法。这是不好的做法吗?

4 个答案:

答案 0 :(得分:1)

JavaScript中的语句末尾不需要semicolon,就像在C,C ++,C#,Java等语言中需要,一样。但是,在我们放置一个语句时,这是一个很好的做法。分号(这是因为我们很多人习惯用上述语言编写应用程序)。另一方面,在语句的末尾使用{{1}},尽管它在JavaScript中工作,但它带来了一些混乱。话虽如此,我认为这是一种不好的做法。

答案 1 :(得分:1)

命令式编程语言区分语句表达式,它们大致对应于英语等自然语言中的句子和组。这样:

a = 1, b = 1;

是一个由逗号分隔的两个表达式组成的语句。在英语中,这听起来像

A cat has a bat, a pig has a wig.

另一方面,这个

a = 1; b = 1;

是两个陈述,用英语写成两个句子:

A cat has a bat. A pig has a wig.

在这个简单的例子中,差异可以忽略不计,但通常你应该用句子来表达自己,而不是用逗号分隔的句子将所有东西聚集在一起。在某些时候它会变得非常愚蠢:

  
    

艺术家是美丽事物的创造者,揭示艺术并隐瞒艺术家是艺术的目标,评论家是能够将他的美好事物的印象转化为另一种方式或新材料的人,最高的,作为最低级的批评形式是一种自传模式,那些在美丽事物中发现丑陋含义的人是腐败而不迷人,这是一种错误。

  

答案 2 :(得分:0)

我没有看到它的问题,除了可能会让审查它的开发人员感到困惑,并且可能认为它是一个声明声明,改变一些东西,并想知道为什么它不起作用。但任何好的linter程序都会遇到类似的问题,当然单元测试会抓住它们。

就个人而言,我没有做那么多,我喜欢旧式(C)

var a, b, c;
a = 1;
b = 2;
c = 3;

但我认为这只是个人偏好。而且我总是在我的东西上运行jslint / jshint并进行大量的单元测试,所以......

答案 3 :(得分:0)

技术上很好。

这是一个带有初始化程序的variable statement

var a = 1, b = 2, c = 3;

这是一个没有初始值设定项的variable statement,后跟一个expression statement,其中有三个comma-ed assignment expressions

var a, b, c;
a = 1, b = 2, c = 3;

两者都很好。

我肯定更喜欢第一个,因为它的思维摩擦力较小。我通常更喜欢不可变变量,所以每个作业对我来说都很可疑。