不久前,我发现JavaScript中的数组不需要包含有序的键集(0-x
)即可在其中存储值
某些数字键可能未定义(0-4 ... 6-x
,其中5
未定义)。
这会在语义上创建两种相似的数组:
arrayA = [, ,]
(部分为空的数组或稀疏数组)
arrayB = [undefined, undefined]
(填充数组)
但是最近,我在 Google Chrome开发者控制台 中修改了JavaScript,并遇到了以下问题:
现在第二个数组就像arrayA
,第三个数组像arrayB
,如控制台所示。
但是第一个数组([...'♀️']
)...是什么?
我打开了它的目录,看到定义为 hole
的元素是undefined
,它们各自的键在数组中。 / p>
我还在数组上运行了几种JavaScript循环:
for...in
语句捕获除* hole
*之外的所有元素。 for...of
语句捕获除* hole
*之外的所有元素,并继续引发错误,指出所使用的迭代器变量为undefined
,即:
for (var value of [...'♀️']) console.log(value);
// Throw 'ReferenceError' when loop is done.
Array.prototype.forEach
方法捕获除* hole
* s之外的所有元素。
do...while
,for
和while
语句捕获除* hole
*之外的所有元素。为什么控制台会认为这些值不同于 empty
或 undefined
(与arrayA
和{{1 }})?
主要问题是:是否隐式地存在另一种类型的数组?如果有,那么有什么要注意的吗?
答案 0 :(得分:2)
...
被称为传播语法。在此处详细了解:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
表情符号由多种元素组成,浏览器将其呈现为单个表情符号。这是一篇简短的文章,对此进行了扩展。 https://til.hashrocket.com/posts/2f488279a3-expand-emojis-with-the-spread-operator
通过将扩展语法应用于表情符号,您可以查看其组成的各个表情符号。