Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组';文字';-这只是描述了它是如何创建的,因为它可以动态地更改吗?_Javascript_Literals - Fatal编程技术网

Javascript数组';文字';-这只是描述了它是如何创建的,因为它可以动态地更改吗?

Javascript数组';文字';-这只是描述了它是如何创建的,因为它可以动态地更改吗?,javascript,literals,Javascript,Literals,我不明白为什么Mozilla将其称为数组“Literal”,而它是使用VARIABLE关键字定义的,并且可以完全更改 var咖啡=[“法国烤肉”、“哥伦比亚”、“科纳”] 谁能给我解释一下吗 术语“literal”的意思是“这里是数组,就在这里,整个东西”。创建相同数组的非文字方式可以是: var coffees = new Array(); coffees.push("French Roast"); coffees.push("Colombian"); coffees.push("Kona")

我不明白为什么Mozilla将其称为数组“Literal”,而它是使用VARIABLE关键字定义的,并且可以完全更改

var咖啡=[“法国烤肉”、“哥伦比亚”、“科纳”]

谁能给我解释一下吗


术语“literal”的意思是“这里是数组,就在这里,整个东西”。创建相同数组的非文字方式可以是:

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

你混淆了文字和常量

常量不会改变,但文本只意味着显式设置整个数组值

换句话说,您定义的是您真正想要的数组值。文字本身(在右侧)是常量,但您正在将其分配给变量。同样,您可以将常量的值指定给变量

几乎每种数据类型都有文本

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文本的内容:

编写的,
[“法国烤肉”、“哥伦比亚人”、“科纳”]
实际上无法更改——它是一个包含这三个字符串的数组,没有其他内容。一旦文本存储在变量中,变量的值就可以更改,因此该变量是非文本的

您甚至可以动态更改由文本表示的结构的值,例如,
[1,2,3].push(4)
,但即便如此,
[1,2,3]
的写入值是指包含这三个元素的数组的文本

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

提出术语“数组文字”的主要原因是,使用
[]
文字或
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

因此,除了文字语法更加简洁外,它还具有100%的可预测性。

尽管实际上,您使用的是一个空文字来创建数组,然后填充它。“这里是数组,就在这里,全部内容”。但是我可以稍后删除或添加到这个数组中,对吗?@toddv:是的,文本数组只是
coffes
变量的起点。这非常有意义。我希望这是真的!除非我另有发现,否则我将把它标为答案。
var myArray = [1,2,3]; // myArray type is object, value [1,2,3], probably what you'd want