7

在 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

对于全局变量。

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

4

4 回答 4

18

在 JavaScript 中,如果你不写分号 ;,它们会为你插入,不可见。而且您可能并不总是喜欢他们去的地方。

从技术上讲,您不需要以分号结束每个语句。然而,大多数人认为这是一个好主意。

有关更多信息,请仔细阅读此 google 搜索的结果。我们为这个话题争论了很久。


这是一个示例,说明为什么这比乍一看更复杂。虽然从技术上讲,您不需要以分号结束每个语句,但在某些情况下您必须这样做,否则事情会中断。在大多数代码库中,您不能完全忽略它们。

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是不是一个函数?!?它不应该是一个函数!”

或者您可以只使用分号以保持一致性。

于 2013-02-19T23:01:07.613 回答
0

这个很晚的答案只会让其他可能读到这篇文章的人感到困惑。

由于您实际上是在谈论commas,而不是分号,因此我只能假设您对引擎隐式添加的内容有误解。

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

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

正在被隐式转换为:

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

不是这个,你可能期待:

var express = require('express'),
    jade = require('jade');
于 2014-11-15T22:08:56.283 回答
0

简而言之,没有。当您进行代码压缩等操作并且编译器认为您的两个语句是一个时,您可能会遇到的问题会出现。无论如何,如果你选择不使用逗号/分号,这是绝对不推荐的,你应该没问题。

于 2013-02-19T22:53:20.070 回答
0

Node.js 使用 V8 引擎来读取您的代码,因此它的行为与 Google Chrome 中的行为非常相似。也就是说,不使用分号通常是一种不好的做法。解释器将尝试理解您的代码,并且有时可能会出错(由于您的错)。

查看此内容以获得完整解释:您是否建议在 JavaScript 中的每个语句后使用分号?

于 2013-02-19T23:01:53.780 回答