首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Errors: For-each-in loops are deprecated

信息

代码语言:javascript
复制
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 已被用来迭代指定的对象值。

弃用的语法

代码语言:javascript
复制
var object = { a: 10, b: 20 };

for each (var x in object) {
  console.log(x);        // 10
                         // 20
}

可选的标准语法

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

代码语言:javascript
复制
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),您可以获取指定对象值的数组,并像这样迭代数组:

代码语言:javascript
复制
var object = { a: 10, b: 20 };

for (var x of Object.values(object)) {
  console.log(x);        // 10
                         // 20
}

数组迭代

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

弃用的语法

代码语言:javascript
复制
var array = [10, 20, 30];

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

可选的标准语法

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

代码语言:javascript
复制
var array = [10, 20, 30];

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

遍历一个可以为null的数组

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

弃用的语法

代码语言:javascript
复制
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

代码语言:javascript
复制
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对象。

代码语言:javascript
复制
var object = { a: 10, b: 20 };

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

可选的标准语法

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

代码语言:javascript
复制
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),您可以获取指定对象值的数组,并像这样迭代数组:

代码语言:javascript
复制
var object = { a: 10, b: 20 };

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

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com