JavaScript:为什么需要删除数组的0索引?

4
在 underscore 源代码中,如果对一个数组应用 shift 或 splice,并且数组长度为零:
 if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];

你知道为什么还需要执行这个操作吗:delete obj[0]


我没有仔细查看源代码,所以这只是一个注释。但由于该代码是包装器的一部分而不是真正的数组,因此这可能是必要的修复。 - t.niese
1个回答

7
在问题跟踪器中搜索后发现我的假设是正确的,这只是修复IE bug的方法。 splice()和shift()在IE中存在bug
"jdalton" 在2011年12月6日评论说:在使用类数组对象与_(...)时,splice()和shift()在IE浏览器中存在bug,无法删除索引为0的值。IE兼容模式和版本低于9的IE浏览器具有有缺陷的数组shift()和splice()函数,尽管将长度属性设置为0,但仍未能删除类数组对象的最后一个元素object[0]。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接