Javascript 是否删除数组中不存在的索引元素上的运算符行为?
如果我试图删除数组中不存在的索引元素,为什么delete运算符返回true 更准确地说,在javascript中删除未定义的是真的吗Javascript 是否删除数组中不存在的索引元素上的运算符行为?,javascript,arrays,Javascript,Arrays,如果我试图删除数组中不存在的索引元素,为什么delete运算符返回true 更准确地说,在javascript中删除未定义的是真的吗 var arr = ['a','b','c','d']; console.log(delete arr[2000]); //true why? console.log(delete aaaaa); //true why not reference error? console.log(delete arrr[2000]); //referenc
var arr = ['a','b','c','d'];
console.log(delete arr[2000]); //true why?
console.log(delete aaaaa); //true why not reference error?
console.log(delete arrr[2000]); //reference error it's okay i think
我不明白第二次和第三次删除之间的区别。理想情况下,两者都应给出参考误差。来自:
仅当属性存在且无法删除时返回false。信息技术
在所有其他情况下返回true
编辑:
在这里,您只需删除范围中的一个,主要是窗口范围
console.log(delete aaaaa); //true why not reference error?
因此,这与:
console.log(delete window.aaaaa); //true
这里arrr是未定义的,在调用delete方法之前会出现一个引用错误
console.log(delete arrr[2000]); //reference error it's okay i think
因为它起作用了,arr[2000]不再存在。你的意思是删除未定义的是真的吗?arr[2000]未定义真正的问题是你想做什么,这可能是典型的XY问题。更新了我对你编辑的答案