在线文档教程
JavaScript
错误 | Errors

Errors: For-each-in loops are deprecated

Errors: For-each-in loops are deprecated

信息

Warning: JavaScript 1.6's for-each-in loops are deprecated; consider using ES6 for-of instead

错误类型

Warning

什么地方出了错?

JavaScript 1.6's for each (variable in obj) statement is deprecated, and will be removed in the near future.

例子

对象迭代

for each...in 已被用来迭代指定的对象值。

弃用的语法

var object = { a: 10, b: 20 }; for each (var x in object) { console.log(x // 10 // 20 }

可选的标准语法

您现在可以使用标准for...in循环遍历指定的对象键,并获取循环内的每个值:

var object = { a: 10, b: 20 }; for (var key in object) { var x = object[key]; console.log(x // 10 // 20 }

或者,使用for...of(ES2015)和Object.values(ES2017),您可以获取指定对象值的数组,并像这样迭代数组:

var object = { a: 10, b: 20 }; for (var x of Object.values(object)) { console.log(x // 10 // 20 }

数组迭代

for each...in 已经被用来遍历指定的数组元素。

弃用的语法

var array = [10, 20, 30]; for each (var x in array) { console.log(x // 10 // 20 // 30 }

可选的标准语法

for...of(ES2015)循环现在也是可以的。

var array = [10, 20, 30]; for (var x of array) { console.log(x // 10 // 20 // 30 }

遍历一个可以为null的数组

for each...in如果指定的值是nullundefinedfor...of则不执行任何操作,但会在这些情况下抛出异常。

弃用的语法

function func(array) { for each (var x in array) { console.log(x } } func([10, 20] // 10 // 20 func(null // prints nothing func(undefined // prints nothing

可选的标准语法

重写for each...in语句以使值可以null或者也可以undefined与之for...of相同,你需要警惕周围for...of

function func(array) { if (array) { for (var x of array) { console.log(x } } } func([10, 20] // 10 // 20 func(null // prints nothing func(undefined // prints nothing

迭代对象的键值对

弃用的语法

有一个不赞成的习惯用法迭代指定的对象的键值对使用for each...in和不赞成使用的Iterator对象。

var object = { a: 10, b: 20 }; for each (var [key, value] in Iterator(object)) { console.log(key, value // "a", 10 // "b", 20 }

可选的标准语法

您现在可以使用标准for...in循环遍历指定的对象键,并获取循环内的每个值:

var object = { a: 10, b: 20 }; for (var key in object) { var value = object[key]; console.log(key, value // "a", 10 // "b", 20 }

或者,使用for...of(ES2015)和Object.entries(ES2017),您可以获取指定对象值的数组,并像这样迭代数组:

var object = { a: 10, b: 20 }; for (var [key, value] of Object.entries(object)) { console.log(key, value // "a", 10 // "b", 20 }