如果我尝试删除数组中不存在的索引元素,为什么delete运算符返回true?
更确切地说,在javascript中删除undefined是真的吗?
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
Run Code Online (Sandbox Code Playgroud)
我不明白第二次和第三次删除之间的区别.两者都应该理想地给出参考错误.
来自MDN:
仅当属性存在且无法删除时才返回false.它在所有其他情况下返回true.
编辑:
在这里你只需删除范围内的a,主要是窗口范围
console.log(delete aaaaa); //true why not reference error?
Run Code Online (Sandbox Code Playgroud)
所以它一样:
console.log(delete window.aaaaa); //true
Run Code Online (Sandbox Code Playgroud)
这里arrr未定义,并且在调用delete方法之前会出现引用错误
console.log(delete arrr[2000]); //reference error it's okay i think
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2292 次 |
| 最近记录: |