在JavaScript中声明多个变量

在JavaScript中,能够这样声明多个变量: ajax

var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;

...或像这样: cors

var variable1 = "Hello World!",
    variable2 = "Testing...",
    variable3 = 42;

一种方法比另外一种方法更好/更快吗? 函数


#1楼

这样操做时,它的可读性更高: oop

var hey = 23;
var hi = 3;
var howdy 4;

可是这种方式占用的空间和代码行更少: url

var hey=23,hi=3,howdy=4;

它多是节省空间的理想选择,可是让JavaScript压缩器为您处理它。 spa


#2楼

我惟一但必不可少的逗号用法是在for循环中: 设计

for (var i = 0, n = a.length; i < n; i++) {
  var e = a[i];
  console.log(e);
}

我去这里查看在JavaScript中是否能够。 code

即便看到它起做用,仍然存在一个问题,即n是否在函数中是局部的。 对象

这验证n是本地的: ip

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建议的第二个示例将全部变量都耦合到同一条语句中,这使得不可能采用其中的一行并将其移动到其余位置而不会破坏东西(高度耦合)。 他给出的第一个示例使变量分配彼此独立(低耦合)。

“低耦合一般是结构良好的计算机系统和良好设计的标志,当与高凝聚力结合使用时,能够达到较高的可读性和可维护性的整体目标。”

http://en.wikipedia.org/wiki/Coupling_(computer_programming)

所以,选择第一个。

相关文章
相关标签/搜索