数组如何存储空值-JavaScript

时间:2019-02-07 01:40:22

标签: javascript

不久前,我发现JavaScript中的数组不需要包含有序的键集(0-x)即可在其中存储值

某些数字键可能未定义(0-4 ... 6-x,其中5未定义)。


这会在语义上创建两种相似的数组:

arrayA = [, ,]部分为空的数组稀疏数组

arrayB = [undefined, undefined]填充数组


但是最近,我在 Google Chrome开发者控制台 中修改了JavaScript,并遇到了以下问题:

enter image description here

现在第二个数组就像arrayA,第三个数组像arrayB,如控制台所示。

但是第一个数组([...'‍♀️'])...是什么?

我打开了它的目录,看到定义为 hole 的元素是undefined,它们各自的键在数组中。 / p>

enter image description here

我还在数组上运行了几种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...whileforwhile语句捕获除* hole *之外的所有元素。

为什么控制台会认为这些值不同于 empty undefined (与arrayA和{{1 }})?


主要问题是:是否隐式地存在另一种类型的数组?如果有,那么有什么要注意的吗?

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

通过将扩展语法应用于表情符号,您可以查看其组成的各个表情符号。