在JavaScript中,可以这样声明多个变量:
var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;
...或像这样:
var variable1 = "Hello World!",
variable2 = "Testing...",
variable3 = 42;
一种方法比另一种方法更好/更快吗?
#1楼
这样操作时,它的可读性更高:
var hey = 23;
var hi = 3;
var howdy 4;
但是这种方式占用的空间和代码行更少:
var hey=23,hi=3,howdy=4;
它可能是节省空间的理想选择,但是让JavaScript压缩器为您处理它。
#2楼
我唯一但必不可少的逗号用法是在for循环中:
for (var i = 0, n = a.length; i < n; i++) {
var e = a[i];
console.log(e);
}
我去这里查看在JavaScript中是否可以。
即使看到它起作用,仍然存在一个问题,即n是否在函数中是局部的。
这验证n是本地的:
a=[3,5,7,11];
(function l () { for (var i = 0, n = a.length; i < n; i++) {
var e = a[i];
console.log(e);
}}) ();
console.log(typeof n == "undefined" ?
"as expected, n was local" : "oops, n was global");
有一阵子我不确定,是否在语言之间切换。
#3楼
在组织的每个范围中通常使用一个var语句 。 所有“作用域”遵循相似模式的方式使代码更具可读性。 另外,引擎无论如何都将它们“提升”到顶部。 因此,将您的声明放在一起可以模仿实际上会发生的事情。
#4楼
我认为第一种方法(多个vars)是最好的,因为您最终可能会发现(从使用Knockout的应用程序中),这在我看来很难理解:
var categories = ko.observableArray(),
keywordFilter = ko.observableArray(),
omniFilter = ko.observable('').extend({ throttle: 300 }),
filteredCategories = ko.computed(function () {
var underlyingArray = categories();
return ko.utils.arrayFilter(underlyingArray, function (n) {
return n.FilteredSportCount() > 0;
});
}),
favoriteSports = ko.computed(function () {
var sports = ko.observableArray();
ko.utils.arrayForEach(categories(), function (c) {
ko.utils.arrayForEach(c.Sports(), function (a) {
if (a.IsFavorite()) {
sports.push(a);
}
});
});
return sports;
}),
toggleFavorite = function (sport, userId) {
var isFavorite = sport.IsFavorite();
var url = setfavouritesurl;
var data = {
userId: userId,
sportId: sport.Id(),
isFavourite: !isFavorite
};
var callback = function () {
sport.IsFavorite(!isFavorite);
};
jQuery.support.cors = true;
jQuery.ajax({
url: url,
type: "GET",
data: data,
success: callback
});
},
hasfavoriteSports = ko.computed(function () {
var result = false;
ko.utils.arrayForEach(categories(), function (c) {
ko.utils.arrayForEach(c.Sports(), function (a) {
if (a.IsFavorite()) {
result = true;
}
});
});
return result;
});
#5楼
“耦合之上的凝聚力”的概念不仅可以用于对象/模块/功能,还可以更普遍地应用。 它也可以在这种情况下使用:
OP建议的第二个示例将所有变量都耦合到同一条语句中,这使得不可能采用其中的一行并将其移动到其他位置而不会破坏东西(高度耦合)。 他给出的第一个示例使变量分配彼此独立(低耦合)。
“低耦合通常是结构良好的计算机系统和良好设计的标志,当与高凝聚力结合使用时,可以达到较高的可读性和可维护性的总体目标。”
因此,选择第一个。