在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
表示全局变量。
但是这个问题是关于“逗号”的,所以请不要在编辑我的问题(之前完成)时用分号替换逗号。
答案 0 :(得分: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
不是一个函数?!?它不应该是一个函数!“
或者您可以使用具有一致性的分号。
答案 1 :(得分:0)
简而言之,没有。当你去做代码缩小和编译器认为你的两个陈述是一个时,你可能遇到的问题就会出现。无论如何,如果你选择不使用逗号/分号,绝对不推荐,你应该没问题。
答案 2 :(得分:0)
Node.js使用V8引擎来读取您的代码,因此它几乎与Google Chrome中的行为相似。也就是说,不使用分号通常是一种不好的做法。解释器将尝试理解您的代码,并且可能有时会弄错(由您的错误)。
请查看此内容以获取完整说明:Do you recommend using semicolons after every statement in JavaScript?
答案 3 :(得分:0)
这个非常晚的答案只是为那些可能会读到这一点的其他人提供了明确的答案。
由于您 实际正在讨论逗号,而不是半冒号,我只能假设您误解了隐含添加的内容。发动机。
逗号不可选。这段代码:
express = require('express')
jade = require('jade')
被隐式转换为:
var express = require('express');
var jade = require('jade');
不是这个,你可能会期待:
var express = require('express'),
jade = require('jade');