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
如果指定的值是null
或undefined
,for...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
}