这个node.js声明代码是node.js的方式,还是可以通过使用更少的逗号和分解成更多的行来改进



我刚从python迁移到node.js。我发现node.js中这个声明代码的语法很奇怪,因为它来自python背景。为什么有这么多逗号?是否有可能使用更少的逗号重写它并分解成更多的行?这样的语法在node.js中常见吗?对于python用户来说,这段代码看起来更难读。

var app = require('http').createServer(handler),
    io = require('socket.io').listen(app),
    fs = require('fs'),
    mysql = require('mysql'),
    connectionsArray = [],
    connection = mysql.createConnection({
      host: 'localhost',
      user: 'root',
      password: '',
      database: 'dbSen',
      port: 3306
    }),
    POLLING_INTERVAL = 1000,
    pollingTimer;

JavaScript的一个怪癖是变量的创建方式。如果不使用var关键字,则变量将泄漏到全局作用域。看一下以下内容:

function foo() {
  var x = 5; // local variable
  y = 10; // this leaks to the global scope!
}

使用逗号分隔的变量声明只是编写大量var语句的一种简便方式。所以像这样做:

var a = 10,
    b = 20,
    c = 30,
    d = 40;

与下面的操作相同:

var a = 10;
var b = 20;
var c = 30;
var d = 40;

回答你的问题,是的,这种语法在Node中很常见,在JavaScript中也很常见。

当然是:

var app = require('http').createServer(handler);
var io = require('socket.io').listen(app);
var fs = require('fs');
var mysql = require('mysql');
var connectionsArray = [];
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'dbSen',
    port: 3306
});
var POLLING_INTERVAL = 1000;
var pollingTimer;

逗号只是将var关键字扩展到下一行。这确实是一种常见的做法,尽管我同意它使代码更难阅读。

您将看到这种模式的原因是因为人们不喜欢多次写入var关键字,而不使用var关键字:

app = require('http').createServer(handler);
io = require('socket.io').listen(app);

将使变量全局化,如果在严格模式下运行,则引发ReferenceError

您可能会发现var关键字上的mdn页面很有用

这段代码使用var模式声明。在你的第一个声明之后,你可以添加多个用逗号分隔的声明,而不用重复var关键字。

最新更新