在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)

所以,選擇第一個。

相關文章
相關標籤/搜索