Javascript - 所有数组都是文字吗?

Javascript - Are all arrays literal?

我正在通读 Mozilla Javascript documentation,我对 "literal" 这个词的用法有点困惑。具体来说,Javascript中的数组是否都被认为是"array literals"。

数组文字是按以下方式创建的数组:

let arr = [1,2,3];

仅此而已。您也可以这样创建数组:

let arr = new Array(10);

数组字面量的作用是可以方便地同时声明初始化数组。

let arr = [];  // declaring;

arr[0] = 1;
arr[1] = 2;
// etc. = initializing

使用数组文字语法,我们可以同时执行这些步骤,这样可以使代码更简洁。

还有一个 Object literal 语法如下:

let obj = {prop1: 1}

这是 shorthand 用于:

let obj = new Object();

obj.prop1 = 1;

Array literal 表示写成代码的数组值,像这样:[4, 5, 6]

let array1 = [4,5,6]; // array created with an array litteral
console.log(array1);

一个数组,是一个数组类型的对象。

您可以通过编写数组文字或其他方式创建数组,例如(如另一个答案所述)使用 Array 构造函数,或使用 split 函数:"4 5 6".split(' ');

let myString = '4 5 6';
let array2 = myString.split(' ' ); // we get an array from split, but no literal was used
console.log(array2);

split函数的结果也是一个数组,只是代码中没有按字面写

数组是一种值(它可以存储在变量中,传递给函数等)。

数组文字是一种语法。具体来说,它指的是 [ ... ](其中 ... 是以逗号分隔的值列表)。

执行数组文字会在运行时创建一个数组。但是,还有其他创建数组的方法:

var x = new Array();

x 包含一个不是从文字创建的数组。

同样,产生字符串的操作也有很多种,但只有"..."'...'是字符串literals.

没有"literal array"和"non-literal array"。区别在于 "array literal" 和 "array value"。这里的一个 "literal" 是源代码中一个值的表示。例如,这是一个从数字文字 (42) 初始化的变量:

let a = 42;

这里是一个被赋值的变量,这个值是计算出来的;此行中有两个文字(1131):

let b = 11 + 31;

以同样的方式,{} 是我们可以描述为 "an empty array" 的值的文字。 [1, 2, 3] 是一个数组文字。 Array(1, 2, 3) 将创建相同的数组,但它不是数组文字;它通过调用一个函数来计算数组。

特别是对于编译语言,文字的值可以已经开始 "baked in" 进入可执行文件,这意味着在执行期间不需要花费时间来分配和初始化它们;它们已经存在于可执行文件的数据部分。例如,您可以在 C 和 Java 中看到这一点。

我认为只是句子的措辞让你感到困惑。让我换一种更容易理解的方式:

var array = [1, 2, 3]**; 

这里[]是数组字面量,1, 2, 3是数组表达式。

希望对您有所帮助。

You use literals to represent values in JavaScript. These are fixed values, not variables, that you literally provide in your script

字面解释literal,就是我们按字面意思指定了一些值。它是 JavaScript 中的一种对象初始化器。

话虽如此,现在回答您的问题: Javascript 中的所有数组都被认为是 "array literals"?

Note : An array literal is a type of object initializer.

对我来说问题应该是 JavaScript 中的所有数组都使用 "array literals" 初始化了吗? 因为数组文字不是类型而是类型初始化数组的方法。

您可以使用如下不同的方法初始化数组:

let x = new Array(4);
console.log(x.length);
let y = new Array('a', 'b');
console.log(y);
let z = [];               // Array literal
console.log(z.length);
let p = ['a', 'b', 6];    // Array literal
console.log(p);