为什么在JavaScript中不推荐使用for…in()

有人说JavaScript中不推荐使用for…in,为什么不推荐使用呢?
理由如下:
不妨看看下面代码的输出:

var a = []; a[5] = 5; for (var i = 0; i < a.length; i++) { console.log(a[i]); }/* 输出结果: undefined undefined undefined undefined undefined 5 */

如果你使用for…in,情况如下:
var a = []; a[5] = 5; for (var x in a) { console.log(x); }/* 输出结果: 5 */

【为什么在JavaScript中不推荐使用for… in()】还要考虑JavaScript库可能会做这样的事情,这会影响你创建的任何数组:
Array.prototype.foo = 1; var a = [1, 2, 3, 4, 5]; for (var x in a){ console.log(x); }/* 输出结果: 0 1 2 3 4 foo */

    推荐阅读