消息
警告: JavaScript 1.6's 版本的for-each-in遍历不再赞成使用; 建议用 ES6的 for-of 替换
错误类型
警告
出了什么问题?
JavaScript 1.6's for each (variable in obj)
语法不赞成使用, 将在未来版本移除它。
实例
遍历对象
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 }
也可以使用{jsxref("Statements/for...of", "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 }
遍历一个空数组
for each...in
如果指定值是 null
o或 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...of
重写for each...in
后值可以为 null
和 undefined
,同时你需要警惕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 }
也可以使用{jsxref("Statements/for...of", "for...of")}} (ES2015) 和 Object.values
(ES2017), 你可以获取指定对象的值得数组然后像这样遍历它:
var object = { a: 10, b: 20 }; for (var [key, value] of Object.entries(object)) { console.log(key, value); // "a", 10 // "b", 20 }