我感到震惊的是,
...
的结果。document.writeln(Object.keys([,1,,1]));
是
1,3
这是一个自动过滤掉数组中不包含任何内容的索引的函数。但是当我尝试打印出Object.keys([,1,undefined,1]):
document.writeln(Object.keys([,1,undefined,1]));
结果如下:
1,2,3
这与之前的不同,我在第一个中尝试打印索引2的值:
document.writeln([,1,,1][2]);
实际上是未定义的。为什么Object.keys([,1,,1])和Object.keys([,1,undefined,1])返回不同的结果?
console.log
打印这两个数组,你会注意到它们之间的差异。第一个数组显示<1 empty slot>
,而第二个数组则显示undefined
。这个数组被设计成在你尝试访问一个空槽时返回undefined
,但那不是它里面的值。 - Kaddath