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