小心FOR IN遍历数组

简介: From stackoverflow 查看原文var a = []; // Create a new empty array.a[5] = 5; // Perfectly legal JavaScript that resizes the array.for (var i = 0; i < a.length; i++) { // Iterate o

From stackoverflow 查看原文

var a = []; // Create a new empty array.
a[5] = 5;   // Perfectly legal JavaScript that resizes the array.

for (var i = 0; i < a.length; i++) {
  // Iterate over numeric indexes from 0 to 5, as everyone expects.
  console.log(a[i]);
}
/**
 * 输出:
 * undefined (5次)
 * 5
 */
AI 代码解读
var a = [];
a[5] = 5;
for (var x in a) {
  // Shows only the explicitly set index of "5", and ignores 0-4
  console.log(x);
}

/**
 * 输出:
 * 5
 */
AI 代码解读
// Somewhere deep in your JavaScript library...
Array.prototype.foo = 1;

// Now you have no idea what the below code will do.
var a = [1, 2, 3, 4, 5];
for (var x in a){
  // Now foo is a part of EVERY array and 
  // will show up here as a value of 'x'.
  console.log(x);
}

/**
 * 输出:
 * 0
 * 1
 * 2
 * 3
 * 4
 * foo
 */
AI 代码解读

加一个 hasOwnProperty (它可是JavaScript中唯一一个处理属性而不查找原型链的函数) 过滤一下还是可以:

if (a.hasOwnProperty(x)){
  console.log(x);
}
AI 代码解读
目录
打赏
0
0
0
0
14
分享
相关文章
【100%好礼】诚邀体验SoFlu-JavaAl开发助手,重塑AI编码价值
在这个数字化时代,软件开发任务繁重,飞算科技推出SoFlu-JavaAl开发助手,诚邀您体验AI编码新境界。它不仅生成代码,还通过自然语言理解需求,精准生成完整工程源码,大幅缩短设计工期,提升效率。SoFlu-JavaAl支持一键构建Java Maven工程,轻松合并老项目,快速响应需求变更。参与体验还有机会获多重好礼!
Flink---10、处理函数(基本处理函数、按键分区处理函数、窗口处理函数、应用案例TopN、侧输出流)
Flink---10、处理函数(基本处理函数、按键分区处理函数、窗口处理函数、应用案例TopN、侧输出流)
对于KMP的next数组的新发现,好像我们并不用回溯
对于KMP的next数组的新发现,好像我们并不用回溯
75 0
阿里云物联网平台offline离线日志原因排查
整理一下常见的离线日志offline reason,方便理清思路排查设备端离线原因。
HH
10274 15
阿里云物联网平台offline离线日志原因排查
地震当晚,淘宝店主突然收到陌生留言:“请给我报个平安”
九寨沟地震,牵动着所有人的心。 淘宝上,有很多九寨沟人承接各种租车、住宿等旅游服务,还把牦牛肉、牛角梳子等当地特产销往全国各地。地震发生后,由于通讯和物流被中断,大部分卖家只能暂停发货,一些卖家已经疏散前往成都等地。
2488 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问