Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有人知道只有两个键是多么的一致吗?_Javascript - Fatal编程技术网

Javascript 有人知道只有两个键是多么的一致吗?

Javascript 有人知道只有两个键是多么的一致吗?,javascript,Javascript,我想知道我是否可以相信这样一个事实:[1,2]只有两个键:0和2,或者是否有人碰巧知道任何JS引擎是否也会给我一个1 我测试过的每个浏览器都会显示键0、2,但目前我没有旧版本,也没有安卓手机,或者 理由: 我正在requestAnimationFrame的顶部编写一个自定义计时器库,因此基于内部数组索引返回可取消的ID。我正在试图弄清楚,只要delete ary[ix]就足以遍历数组上的所有对象键,而无需进行额外的健全性检查。如果您愿意假设您的代码将在符合要求的ECMAScript实现上运行,那

我想知道我是否可以相信这样一个事实:
[1,2]
只有两个键:
0
2
,或者是否有人碰巧知道任何JS引擎是否也会给我一个
1

我测试过的每个浏览器都会显示键
0、2
,但目前我没有旧版本,也没有安卓手机,或者

理由:


我正在
requestAnimationFrame
的顶部编写一个自定义计时器库,因此基于内部数组索引返回可取消的ID。我正在试图弄清楚,只要
delete ary[ix]
就足以遍历数组上的所有对象键,而无需进行额外的健全性检查。

如果您愿意假设您的代码将在符合要求的ECMAScript实现上运行,那么您将被涵盖在内

数组元素可以在数组的开头、中间或结尾省略 元素列表只要元素列表中的逗号不在前面 通过赋值表达式(即,开头或后面的逗号 另一个逗号),缺少的数组元素会导致 数组,并增加后续元素的索引。省略阵列 未定义元素。如果元素在项目末尾被省略 数组,则该元素不影响数组的长度


[1,3]
将产生
[1,未定义,3]

返回的长度为3。

编辑:为了澄清,即使值存在,也不会返回键。

Object.key([1,3])
返回
[“0”,“2”]


编辑2:关于检查数组键是否存在的一个很好的答案。

@MichaelBerkowski——是的,长度是
3
,但a
用于in
循环或
对象。键(ary)
只有
0和
2的键是的,值未定义,但它没有说明键是否为defined@zyklus:“未定义省略的数组元素”,尤其是在该上下文中,这意味着缺少的元素实际上不会产生已定义的索引。否则它会说它们已经定义,它们的值是未定义的,并且跳过了整个“增加索引”部分。我不太确定这种解释。例如,我可以很容易地看到JS引擎有效地执行
ari[1]=undefined
,这将定义键,但保留未定义的值。@zyklus:这不会保留未定义的值。它会将其定义为
未定义
。很抱歉听起来像个书呆子,这个术语没用。原因
ari[1]
计算为
undefined
的原因与
ari[42]
的原因相同:没有键
42
,就像没有键
1
。这很公平。我和你读的一样,fwiw,我只是不确定我是否相信这个术语。虽然我想我可以完成实现,然后等待可能出现的错误:)和
对象。键([1,3])===[0,2]
,这就是我的问题所在。在最新的FireFox和Chrome版本上进行了测试。@语法:该值不存在
a[1]
未定义的
原因与
({})[“此键不存在”]
未定义的
@Jon,OK值是一个错误的单词选择。然而,长度是3,索引1的值是未定义的,键是0和2。@语法——从技术上讲,索引1是“未定义的”,它没有
未定义的值,这就是整点。如果你说
ari[1]=undefined
,你的数组看起来是一样的,但是你现在也有了一个
1