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

Errors: Invalid for-in initializer

信息

代码语言:javascript
复制
SyntaxError: for-in loop head declarations may not have initializers (Firefox)

SyntaxError: for-in loop variable declaration may not have an initializer. (Chrome)

错误类型

SyntaxError in strict mode only.

什么地方出了错?

for ... in循环的头部包含一个初始化表达式。也就是说,一个变量被声明并赋值为| for (var i = 0 in obj)|。在非严格模式下,这个头部声明默默无视,行为如此|for (var i in obj)|。然而在严格的模式下,a SyntaxError被抛出。

例子

这个例子抛出SyntaxError

代码语言:javascript
复制
"use strict";

var obj = {a: 1, b: 2, c: 3 }; 

for (var i = 0 in obj) { 
  console.log(obj[i]);
}

// SyntaxError: for-in loop head declarations may not have initializers

有效的for-in循环

你可以去掉i = 0for-in循环头部的initializer()。

代码语言:javascript
复制
"use strict";

var obj = {a: 1, b: 2, c: 3 };

for (var i in obj) {
  console.log(obj[i]);
}

数组迭代

for ... in循环不应该用于数组迭代。你打算用一个for循环来代替一个for-in循环来迭代Array吗?该for循环允许您设置一个初始值,然后还有:

代码语言:javascript
复制
var arr = [ "a", "b", "c" ] 

for (var i = 2; i < arr.length; i++) { 
  console.log(arr[i]); 
}

// "c"

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com