javascript - 删除具体是如何工作的?

标签 javascript arrays undefined

请检查jsfiddle - http://jsfiddle.net/du8svaym/

var a = [2, 4, "bang", undefined, NaN, 5];

for (i in a)
alert(a[i]); //alerting a[3]=undefined

delete a[1];
for (i in a)
alert(a[i]); //Why not alerting a[1]= undefined?

alert(a[1]); //it is undefined! but not alerted, what is happening under the hood?

如果您注意到,第一个循环警报会警报未定义的值。在第二个循环中,警报 a[1] 未定义,因为我们删除了它,但没有发出警报。两个 undefine 之间有什么区别,delete 设置 undefined 究竟有何不同?

最佳答案

delete 运算符从对象中删除属性。数组是 JavaScript 对象,如下所示:

var foo = {
  '0': 2,
  '1': 4,
  '2': "bang",
  '3': undefined, 
  '4': NaN,
  '5': 5
}
delete foo[1]; // completely removes the property '1' from foo.
console.log(foo);
// outputs:
{
  '0': 2,
  '2': "bang",
  '3': undefined, 
  '4': NaN,
  '5': 5
}

关于javascript - 删除具体是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27704476/

相关文章:

C++ 作业 : Parallel Arrays from text file

c - 对 *.h 文件中声明的函数的 undefined reference

javascript - Phonegap - 在 Apple map 应用程序中打开导航方向

javascript - 纯 JS Ajax 到 jQuery Ajax

ruby - 尝试在 Array 子类中重新定义 += 似乎没有任何作用?

ios - Swift:从接口(interface)类型数组转换为对象数组崩溃

javascript - JQuery - $(document).getElementById ('id' ).submit(function{});未定义不是函数

javascript - 数组中的未定义条目在使用 `true` 将它们解析为 boolean 值后返回 `every`

javascript - 在 JavaScript 上使用面向对象

javascript - 使用javascript动态创建div水平布局元素