您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

JavaScript为什么在数组迭代中使用“ for…in”是个坏主意?

JavaScript为什么在数组迭代中使用“ for…in”是个坏主意?

原因是一种构造:

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]);

}



/* Will display:

   undefined

   undefined

   undefined

   undefined

   undefined

   5

*/

有时可能与另一个完全不同:

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);

}



/* Will display:

   5

*/

还请注意,JavaScript库可能会执行以下操作,这会影响您创建的任何数组:

// 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);

}



/* Will display:

   0

   1

   2

   3

   4

   foo

*/
javascript 2022/1/1 18:14:31 有712人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶