我刚从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关键字。