2012-05-04 1 views
0

Mozillaはアレイ「リテラル」これを呼び出して、なぜそれがVARIABLEキーワードを使用して定義されていますし、それは完全に変更することができたとき、私は...Javascript Array 'Literal' - それは、その場で変更できるので、その作成方法を説明するだけですか?

var coffees = ["French Roast", "Colombian", "Kona"];

を理解していない誰も私にこれを説明することはできますか?

https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Object_literals

答えて

1

書かれ、実際にliteral value["French Roast", "Colombian", "Kona"]を変更することはできません - それは正確な3つの文字列を持つ配列です。リテラルが変数に格納されると、変数の値が変更される可能性があるため、変数はリテラルではありません。

あなたも、例えば、[1,2,3].push(4)をオンザフライでリテラルで表される構造の値を変更することができ、それでも、[1,2,3]書き込まれた値はこれら3つの要素を持つ配列を指すリテラルです。

それは多くの数値リテラルを使用するようなものだ、例えば、a = 1 + 2で表現12は不変リテラルですが、彼らは新しい結果(と明らかにaの値が変更可能)を生成するために組み合わせることができます。

+0

これは理にかなっています。私はそれが本当だと思う!私はそうでなければ答えとしてマークします。 –

1

用語「リテラルは」ただ「ここでは、右ここでは、全部のアレイである」という意味。同じ配列を作成する非リテラルな方法は、次のようになります。

var coffees = new Array(); 
coffees.push("French Roast"); 
coffees.push("Colombian"); 
coffees.push("Kona"); 
+0

実際には、空のリテラルを使用して配列を作成し、それを埋めていますが、 –

+0

"ここには配列があり、ここではすべてが"です。しかし、後でこのアレイを削除または追加することはできますか? –

+1

@toddv:はい、リテラル配列はあなたの 'coffee'変数の出発点にすぎません。 –

4

リテラルと定数は混乱します。

定数は変更されませんが、リテラルは、配列の値を明示的に設定することを意味します。

つまり、という文字どおりを定義すると、配列の値が必要になります。リテラル自体(右辺)は定数ですが、それを変数に代入しています。同じ方法で、定数の値を変数に割り当てることができます。

ほとんどすべてのデータ型のリテラルがあります。

var myNumber = 42;       // Number literal 
var myString = "Thanks for all the fish"; // String literal 
var myObject = { dolphins: 1, humans: 2 }; // Object literal 
3

それはあなたがvar arr = new Array();

を使用するのではなく、配列を初期化するために、角括弧var arr = [];を使用するので、それは同じよう{}だリテラルであるオブジェクト

リテラルは反対であるためにリテラルですコンストラクタに渡され、単なる便利な言語構造です。

あなたは「コンストラクタ対リテラルを」Googleの場合は、件名についてのかなりの数のページを検索します:)

ます。また、ここでjsのリテラルの詳細を読むことができます:https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Literals

1

リテラル用語アレイが育てます主な理由は、[]リテラルまたはArray()コンストラクタを使用してアレイを作成すると、すべての時間の生成同じ結果にない保証であることです。これは、Array()コンストラクタを変更したり、スクリプトで置き換えることができるためです。

var myArray = [1,2,3]; // myArray type is object, value [1,2,3], probably what you'd want 

Array = function() { 
    var n = 0; 

    for (var i=0, l=arguments.length; i<l; i++) { 
     n += arguments[i]; 
    } 

    return n; 
} 

var myArray = Array(1,2,3); // myArray type is number, value 6, probably not what you'd want 

だから、より簡潔であることリテラル構文に加えて、それはまた、100%予測可能である。この例で考えてみましょう。

関連する問題