【发布时间】:2023-03-15 10:42:01
【问题描述】:
根据 ECMAScript,除了其他数据类型之外,还有 null 和 undefined 数据类型。
但最近我看到了一个叫empty 的东西。让我们先重新生成它(我将从基本开始):
let a = new Array() //返回[]length=0
let b = new Array(3) //返回[empty*3]length=3
let c = new Array(3).fill()//返回[undefined,undefined,undefined]length=3
现在,什么? 看到所有定义的元素都是未定义的,它们应该是
a[0]=undefinedb[0]=undefined-
c[0]=undefined
主要内容:
如果假设在@987654336@的位置5添加一个元素,即a[5]=4
那么c 将是[undefined,undefined,undefined,empty,4]
中间的这个空的东西是什么?如果一切都一样,那么在初始化 b 和 c 时有什么区别(我说的是 [empty*3] 和 [undefined,undefined,undefined])。
[这里]建议的答案:What's the difference between empty items in a JavaScrip array and undefined? 没有正确解释它到底是什么。是的,它不能是undefined,因为undefined 是一个值,但是null 又如何呢?如果不是null,为什么empty 不是数据类型?
【问题讨论】:
-
Node.js 在很大程度上只是 V8,这使得它在纯 JavaScript 方面与 Chrome 非常相似。
-
是的,Node.js 的行为方式类似。我说的浏览器控制台是spidermonkey。反正结果是一样的。
-
empty实际上并不是 JavaScript 中的“事物”。您的控制台吐出empty的原因是它试图清楚地表示sparse array。 JS 控制台不受任何标准约束,因此不同的控制台可能会以不同的方式表示数组中的这些孔 -
例如repl.it控制台返回
[ undefined, undefined, undefined, <1 empty item>, 4 ]
标签: javascript arrays