VARIABLEキーワードを使用して定義され、完全に変更できるのに、Mozillaがこれを配列「リテラル」と呼ぶ理由がわかりません...
var coffees = ["French Roast", "Colombian", "Kona"];
誰かが私にこれを説明できますか?
https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Object_literals
VARIABLEキーワードを使用して定義され、完全に変更できるのに、Mozillaがこれを配列「リテラル」と呼ぶ理由がわかりません...
var coffees = ["French Roast", "Colombian", "Kona"];
誰かが私にこれを説明できますか?
https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Object_literals
あなたはリテラルと定数を混同しています。
定数は変更されませんが、リテラルは、配列値全体を明示的に設定していることを意味します。
つまり、文字通り配列値を定義することになります。リテラル自体(右側)は定数ですが、変数に割り当てています。同様に、定数の値を変数に割り当てることができます。
ほとんどすべてのデータ型にリテラルがあります。
var myNumber = 42; // Number literal
var myString = "Thanks for all the fish"; // String literal
var myObject = { dolphins: 1, humans: 2 }; // Object literal
を使用するのではなく、角かっこvar arr = [];
を使用して配列を初期化するため、これはリテラルです。var arr = new Array();
{}
オブジェクトのリテラルと同じです
リテラルはコンストラクターの反対であり、単に便利な言語構造です。
「リテラルvsコンストラクター」をグーグルで検索すると、主題に関するかなりの数のページが見つかります:)
jsリテラルの詳細については、https ://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Literalsを参照することもできます。
書き込まれたリテラル値 ["French Roast", "Colombian", "Kona"]
は実際には変更できません。これは、正確に3つの文字列を含む配列であり、他には何もありません。リテラルが変数に格納されると、変数の値が変更される可能性があるため、変数は非リテラルになります。
たとえば、リテラルで表される構造の値をその場で変更することもできますが、その場合[1,2,3].push(4)
でも、の記述値は[1,2,3]
、これら3つの要素を持つ配列を参照するリテラルです。
a = 1 + 2
これは、たとえば式で数値リテラルを使用するのとよく似て1
おり2
、変更できないリテラルですが、それらを組み合わせて新しい結果を生成できます(そして明らかにの値はa
変更できます)。
「リテラル」という用語は、「ここに配列があり、ここにすべてがあります」という意味です。同じ配列を作成する非リテラルの方法は次のとおりです。
var coffees = new Array();
coffees.push("French Roast");
coffees.push("Colombian");
coffees.push("Kona");
配列リテラルという用語が登場する主な理由は、リテラル[]
またはArray()
コンストラクターを使用して配列を作成しても、常に同じ結果が得られるとは限らないためです。これは、コンストラクターが変更されたり、スクリプトに置き換えられたりする可能性があるためです。この例を考えてみましょう。Array()
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
対
var myArray = [1,2,3]; // myArray type is object, value [1,2,3], probably what you'd want
したがって、リテラル構文がより簡潔であることに加えて、100%予測可能です。