也就是说,如果我使用当前时间作为数组的索引:
array[Date.getTime()] = value;
Run Code Online (Sandbox Code Playgroud)
解释器会实例化从0到现在的所有元素吗?不同的浏览器有不同的做法吗?
我记得曾经是AIX内核中的一个错误,它会根据请求创建伪ttys,但如果你这样做,比如"echo>/dev/pty10000000000"它会创建/ dev/pty0,/ dev/pty1, ......然后摔倒了.在贸易展览会上很有趣,但我不希望这发生在我的客户身上.
我正在做一些基于这篇博客文章的小实验.
我正在谷歌Chrome的调试器中进行这项研究,这是困难的部分.

我得到的事实是我无法删除局部变量(因为它们不是对象属性).我知道我可以"读出"从名为'arguments'的数组传递给函数的所有参数.我甚至得到它,我不能删除和数组的元素,只有实现array[0]有一个未定义的值.
有人可以向我解释undefined x 1嵌入式图像的含义吗?
当我覆盖函数foo返回时arguments[0],我得到通常的'正常'未定义.
这只是一个实验,但似乎有趣,有人知道是什么意思undefined x 1吗?
我只是在摆弄一些JS,发现了一些我认为不会发生的事情.
var arr = [,];
arr.length // 1
arr[0] // undefined
Run Code Online (Sandbox Code Playgroud)
此外,[,,]长度为2.这些数组的长度不应该为0吗?我以为逗号只用于分隔数组中的元素,为什么看起来逗号被视为这些特定数组中的元素?数组的这种行为是否有任何类型的应用程序?
我试图理解'空'稀疏数组(例如new Array(3))和等效'空'密集数组(具有3个未定义条目的数组)之间的区别.
我可以用这两种方式创建一个包含3个未定义值的数组:
var sparse = new Array(3);
// or
var sparse = [,,,];
var dense = Array.apply(null, Array(3)); // See dense array link below
Run Code Online (Sandbox Code Playgroud)
如果我为其中任何一个执行console.log,结果是:
[undefined, undefined, undefined]
Run Code Online (Sandbox Code Playgroud)
如果我遍历每个数组以将其与另一个数组进行比较,它们将严格匹配:
console.log(sparse.length === dense.length);
// true
for (var i = 0; i < dense.length; i++) {
console.log(i +':'+ (dense[i] === sparse[i]));
}
// '0:true'
// '1:true'
// '2:true'
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用.forEach(或map,reduce等),那么回调将永远不会在稀疏数组上调用,但会在密集数组上调用三次:
sparse.forEach(function(val,i){
console.log(i +':'+ val);
});
// Nothing. No-op.
dense.forEach(function(val,i){
console.log(i +':'+ val);
}); …Run Code Online (Sandbox Code Playgroud) 在JavaScript中使用文字语法定义数组时,可以使用其他逗号省略数组元素:
a = [1, 2, 3]; // 1, 2, 3
b = [1, , 2, 3]; // 1, undefined, 2, 3
Run Code Online (Sandbox Code Playgroud)
我注意到在访问值时,省略的值不是"自己的属性"
b.hasOwnProperty(1); //false
Run Code Online (Sandbox Code Playgroud)
相反,如果您明确设置数组undefined,则将其设置为"自己的属性":
c = [1, undefined, 2, 3];
c.hasOwnProperty(1); //true
Run Code Online (Sandbox Code Playgroud)
是否在规范中定义了如何分配省略的数组元素的行为?如果是这样,哪个规格和哪里?
(可选奖金)是否可靠的跨浏览器,如兼容性表格所证明的?
[,'a'].every(x => x==='a')
> True
Run Code Online (Sandbox Code Playgroud)
返回True,虽然第一项是'undefined',因此应该为False?
[,'a'].map(x => x)
> [undefined × 1, "a"]
Run Code Online (Sandbox Code Playgroud)