相关疑难解决方法(0)

Javascript数组稀疏吗?

也就是说,如果我使用当前时间作为数组的索引:

array[Date.getTime()] = value;
Run Code Online (Sandbox Code Playgroud)

解释器会实例化从0到现在的所有元素吗?不同的浏览器有不同的做法吗?

我记得曾经是AIX内核中的一个错误,它会根据请求创建伪ttys,但如果你这样做,比如"echo>/dev/pty10000000000"它会创建/ dev/pty0,/ dev/pty1, ......然后摔倒了.在贸易展览会上很有趣,但我不希望这发生在我的客户身上.

javascript sparse-matrix

90
推荐指数
6
解决办法
3万
查看次数

JavaScript中的"undefined x 1"是什么?

我正在做一些基于这篇博客文章的小实验.

我正在谷歌Chrome的调试器中进行这项研究,这是困难的部分.

这到底是什么?!

我得到的事实是我无法删除局部变量(因为它们不是对象属性).我知道我可以"读出"从名为'arguments'的数组传递给函数的所有参数.我甚至得到它,我不能删除和数组的元素,只有实现array[0]有一个未定义的值.

有人可以向我解释undefined x 1嵌入式图像的含义吗?

当我覆盖函数foo返回时arguments[0],我得到通常的'正常'未定义.

这只是一个实验,但似乎有趣,有人知道是什么意思undefined x 1吗?

javascript arrays oop arguments

26
推荐指数
2
解决办法
1万
查看次数

为什么带有逗号但没有元素的数组文字的长度不为0?

我只是在摆弄一些JS,发现了一些我认为不会发生的事情.

var arr = [,];
arr.length // 1
arr[0] // undefined
Run Code Online (Sandbox Code Playgroud)

此外,[,,]长度为2.这些数组的长度不应该为0吗?我以为逗号只用于分隔数组中的元素,为什么看起来逗号被视为这些特定数组中的元素?数组的这种行为是否有任何类型的应用程序?

javascript

17
推荐指数
2
解决办法
1171
查看次数

为什么`.forEach`在密集数组上工作但在稀疏数组上不工作?

我试图理解'空'稀疏数组(例如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 arrays

5
推荐指数
1
解决办法
125
查看次数

被省略的数组元素是否会产生自己的属性?

在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)

是否在规范中定义了如何分配省略的数组元素的行为?如果是这样,哪个规格和哪里?

(可选奖金)是否可靠的跨浏览器,如兼容性表格所证明的?

javascript arrays

5
推荐指数
1
解决办法
224
查看次数

奇怪的ES6 Array.every行为

[,'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)

javascript arrays ecmascript-6

0
推荐指数
1
解决办法
51
查看次数