Javascript Array'Literal' - 这只是描述它是如何创建的,因为它可以动态更改?

时间:2012-05-04 22:09:12

标签: javascript literals

我不明白为什么Mozilla在使用VARIABLE关键字定义时会将其称为数组'Literal'并且可以完全更改...

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

任何人都可以向我解释这个吗?

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

5 个答案:

答案 0 :(得分:4)

你的文字和常数令人困惑。

常量不会改变,但文字只是意味着您明确地将数组值设置为整体。

换句话说,您正在定义字面想要数组值的内容。文字本身(在右侧)是常量,但是您将它分配给变量。以同样的方式,您可以将常量的值赋给变量。

几乎每种数据类型都有文字。

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

答案 1 :(得分:3)

这是一个文字,因为您使用方括号var arr = [];初始化数组而不是使用var arr = new Array();

{}是对象的文字

的方式相同

文字是对构造函数的反对,只是一种方便的语言构造。

如果你谷歌“文字与构造者”,你会发现很多关于这个主题的网页:)

您还可以在此处阅读有关js文字的更多信息:https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Literals

答案 2 :(得分:1)

术语“文字”只意味着“这里是阵列,就在这里,整个事物”。创建相同数组的非文字方法可以是:

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

答案 3 :(得分:1)

写入的literal value ["French Roast", "Colombian", "Kona"]实际上无法更改 - 它是一个包含三个字符串的数组,而不是其他内容。一旦文字存储在变量中,变量的值就会改变,因此变量是非文字的。

您甚至可以动态更改文字所代表的结构的值,例如[1,2,3].push(4),但即便如此,[1,2,3]书面值也是文字,指的是具有这三个元素的数组。

这就像使用数字文字一样,例如,在a = 1 + 2中,表达式12是不可更改的文字,但它们可以结合起来产生新的结果(显然是a可以改变。)

答案 4 :(得分:1)

术语数组文字的主要原因是使用[]文字或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%可预测的。