在JavaScript中声明多个变量
在JavaScript中,可以这样声明多个变量:在JavaScript中声明多个变量,javascript,variables,coding-style,performance,declaration,Javascript,Variables,Coding Style,Performance,Declaration,在JavaScript中,可以这样声明多个变量: var variable1 = "Hello, World!"; var variable2 = "Testing..."; var variable3 = 42; var variable1 = "Hello, World!", variable2 = "Testing...", variable3 = 42; …或者像这样: var varia
var variable1 = "Hello, World!";
var variable2 = "Testing...";
var variable3 = 42;
var variable1 = "Hello, World!",
variable2 = "Testing...",
variable3 = 42;
…或者像这样:
var variable1 = "Hello, World!";
var variable2 = "Testing...";
var variable3 = 42;
var variable1 = "Hello, World!",
variable2 = "Testing...",
variable3 = 42;
一种方法比另一种好/快吗?这只是个人喜好的问题。这两种方法之间没有区别,除了在去掉空白的情况下用第二种形式保存几个字节之外
var variable1 = "Hello, World!";
var variable2 = "Testing...";
var variable3 = 42;
比以下内容更具可读性:
var variable1 = "Hello, World!",
variable2 = "Testing...",
variable3 = 42;
但是它们做同样的事情。第一种方法更容易维护。每个声明都是单行上的一条语句,因此您可以轻松地添加、删除和重新排序声明
对于第二种方法,删除第一个或最后一个声明很烦人,因为它们分别以
var
关键字开始,以分号结束。每次添加新声明时,都必须用逗号替换最后一行中的分号。这是用于组织的常见方法。所有“作用域”都遵循类似的模式,使代码更具可读性。此外,引擎将它们全部“提升”到顶部。因此,将声明放在一起将更接近实际发生的情况。除了可维护性之外,第一种方法消除了事故全局变量创建的可能性:
(function () {
var variable1 = "Hello, World!" // Semicolon is missed out accidentally
var variable2 = "Testing..."; // Still a local variable
var variable3 = 42;
}());
第二种方式不那么宽容:
(function () {
var variable1 = "Hello, World!" // Comma is missed out accidentally
variable2 = "Testing...", // Becomes a global variable
variable3 = 42; // A global variable as well
}());
也许像这样
var variable1 = "Hello, World!"
, variable2 = 2
, variable3 = "How are you doing?"
, variable4 = 42;
除了更改第一个或最后一个变量外,它很容易维护和读取。这样做更容易阅读:
var hey = 23;
var hi = 3;
var howdy 4;
var hey=23,hi=3,howdy=4;
但这种方式占用的空间和代码行更少:
var hey = 23;
var hi = 3;
var howdy 4;
var hey=23,hi=3,howdy=4;
它可能是节省空间的理想选择,但让JavaScript压缩器为您处理。我唯一但必不可少的逗号用法是for循环: 有一段时间,我不确定如何在语言之间切换。我认为第一种方式(多变量)是最好的,因为你可能会以这种方式结束(从使用的应用程序),在我看来,这很难理解:
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;
});
“超过”的概念可以更普遍地应用,而不仅仅是对象/模块/功能。在这种情况下,它也可以起作用:
OP建议的第二个示例将所有变量耦合到同一个语句中,这使得在不破坏内容(高耦合)的情况下,不可能将其中一行移到其他地方。他给出的第一个例子使变量赋值相互独立(低耦合) 发件人: 低耦合通常是结构良好的计算机系统和良好设计的标志,当与高内聚性结合时,支持高可读性和可维护性的总体目标
因此,选择第一个。虽然两者都有效,但使用第二个会阻止没有经验的开发人员到处放置var语句并导致提升问题。如果每个函数的顶部只有一个var,那么就更容易调试整个代码。这可能意味着声明变量的行并不像某些人希望的那样显式 我觉得这种权衡是值得的,如果这意味着开发人员不再在他们喜欢的任何地方删除“var” 人们可能会抱怨,我也会抱怨,但很多抱怨并不是为了解决语言问题,而是为了纠正程序员的坏习惯,从而防止他们编写的代码出现问题。因此: “在具有块作用域的语言中,通常建议在首次使用的位置声明变量。但由于JavaScript没有块作用域,因此更明智的做法是在函数顶部声明函数的所有变量。建议每个函数使用一条var语句。”-
我认为这是个人喜好的问题。我更喜欢以下方式:
var /* Variables */
me = this, that = scope,
temp, tempUri, tempUrl,
videoId = getQueryString()["id"],
host = location.protocol + '//' + location.host,
baseUrl = "localhost",
str = "Visit W3Schools",
n = str.search(/w3schools/i),
x = 5,
y = 6,
z = x + y
/* End Variables */;
避免使用单语句版本(singlevar)的另一个原因是调试。如果在任何赋值行中抛出异常,堆栈跟踪只显示一行 如果使用逗号语法定义了10个变量,则无法直接知道哪一个是罪魁祸首 独立语句版本没有这种模糊性。介绍了一种非常好的方法:
[a, b] = [1, 2]
a
将等于1
和b
将等于2
我认为,在我们开始使用ES6之前,使用单一var声明的方法既不好也不坏(如果你有短绒和“使用严格的”
。这确实是一种口味偏好。但现在情况对我来说发生了变化。以下是我支持多行声明的想法:
<> L> >P>现在我们有了两种新的变量,<>代码> var >代码>过时了,使用<代码> const <代码>到处都是很好的做法,直到你真的需要<代码>让。所以你的代码通常会包含在代码中间赋值的变量声明,并且因为块范围,你经常会移动变量。我认为使用多行声明更方便
使用ES6:它将把数组中的值或对象中的属性解压缩到不同的变量中
let[variable1,variable2,variable3]=
[“你好,世界!”,“测试…”,42];
console.log(variable1);//你好,世界!
console.log(variable2);//正在测试。。。
console.log(variable3);/42
通过一些格式,可以很容易地解决可维护性问题,例如:
let
my_var1 = 'foo',
my_var2 = 'bar',
my_var3 = 'baz'
;
我严格按照个人喜好使用这种格式。当然,对于单个声明,我会跳过这种格式,或者如果它只是让工作变得一团糟的话。第二种格式会节省几个字节。Ben Alpert:你怎么看?如果去掉空白,那么