Warning: JavaScript 1.6's for-each-in loops are deprecated - JavaScript 编辑

消息

警告: 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...inIterator 对象来遍历指定对象的键值对.

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
}

参见

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:46 次

字数:7104

最后编辑:6年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文