Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.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_Arrays - Fatal编程技术网

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

如果我试图删除数组中不存在的索引元素,为什么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]);  //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问题。更新了我对你编辑的答案