2013-02-19 104 views
7

在node.js的变量声明中省略逗号时会发生风险吗?例如,声明一些全局变量,如下面的作品就好了:Node.js中是否需要逗号?

express = require('express') 
jade = require('jade') 

而且我不想写逗号,如果它的安全不是他们写(我不关心“的代码美/清晰度“论点)。

重要:我的意思是逗号,而不是分号(有3个关于分号的回答)。这非常好,甚至建议从node.js中删除分号。 NPM的创作者也做的:http://blog.izs.me/post/3393190720/how-this-works

如有疑问,请查看最新的JavaScript功能:http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

注意,你也不需要编写

var 

全局变量。

但是,这个问题是关于“逗号”,所以请不要在编辑我的问题时错误地用分号替换逗号(之前完成)。

+2

你的意思是分号,不是逗号? – JohnnyHK 2013-02-19 22:34:45

+1

其实我的意思是逗号 – user1943231 2013-02-20 13:07:10

+0

你包含的例子不需要逗号,而且我也想不出逗号是可选的情况。 – JohnnyHK 2013-02-20 13:14:15

回答

0

总之,没有。当你去做代码缩减和编译器认为你的两个陈述是一样的时候,你可能遇到的问题就会出现。无论如何,如果你选择不使用逗号/分号,这是绝对不推荐,你应该没问题。

+1

缩小您的代码的缩小程序?请告诉我名字,所以我从不使用它。 – 2013-02-19 22:57:34

+0

我在这里阅读这些问题 - > http://dailyjs.com/2012/04/19/semicolons/ – Hacknightly 2013-02-19 23:01:03

+0

伙计们,我说的是COMMAS,不是分号 – user1943231 2013-02-20 13:10:10

18

在JavaScript中,如果你不写分号;它们会被无形地插入你的。你可能并不总是喜欢他们去的地方。

您在技术上不需要用分号结束每个语句。但是,大多数人认为这是一个好主意。请致电this google search查询结果。很长一段时间以来我们一直在争论这个话题。


下面是为什么这比第一眼看起来更复杂的例子。虽然技术上不需要用分号结束每个语句,但有些情况下您必须或事情中断。在大多数代码库中不能完全忽略它们。

foo.def = bar 
(function() { 
    // some self executing closure 
})() 

看起来够简单吧?那么解释器看起来是这样的,这样做:

foo.def = bar(function() { 
    // some self executing closure 
})() 

这可能不是你所期待的。修复它的方法是用分号。

foo.def = bar; 
(function() { 
    // some self executing closure 
})() 

有很多这样的情况。你可以全部学习它们,只在这些情况下使用它们,而当你不可避免地忘记了你的代码时,你会尝试调试你的代码,这是一件很奇怪怪异的事情,你会把你的头发弄出几个小时...... “你是什么意思wtfvar不是一个函数?!?它不应该是一个函数!“

或者你可以使用分号符合一致性。

+0

是我还是你的代码无效?每个示例结尾处都有一个额外的括号。 – 2013-02-19 23:11:01

+0

@ Jean-PhilippeLeclerc哎呀:)谢谢 – 2013-02-19 23:17:54

+1

我实际上是指逗号,而不是分号 – user1943231 2013-02-20 13:07:27

0

Node.js使用V8引擎来读取您的代码,因此它在Google Chrome中的表现几乎相同。也就是说,不使用分号通常是一种不好的做法。口译员会试着理解你的代码,可能有时候会错误(由你的错误)。

检查了这一点更全面的解释:Do you recommend using semicolons after every statement in JavaScript?

+2

不使用分号并不是一个不好的做法:http://blog.izs.me/post/3393190720/how-this-works – user1943231 2013-02-20 13:08:07

+0

如果有疑问,只需检查规格:http://www.ecma-international.org /publications/files/ECMA-ST/Ecma-262.pdf – user1943231 2013-02-20 13:08:28

+1

这可以说是一个糟糕的实践。 Javascsript是一种无论格式如何都应该以相同方式工作的语言。 – 2013-02-20 17:18:36

0

这很晚的答案只是去清除confustion对于其他可能阅读。

既然你实际上谈论逗号,没有分号,我只能假设你有被隐含由发动机添加了什么的误解。

逗号是不是可选。而这种代码:

express = require('express') 
jade = require('jade') 

被隐式转换成这样:

var express = require('express'); 
var jade = require('jade'); 

不是这个,你可能期待:

var express = require('express'), 
    jade = require('jade');