开发者问题收集

forEach 循环后数组赋值出现奇怪行为

2019-11-26
61
  var p = [2, 3, 6]
  var t=0
  var t1 = 1
  var t2 = 100
  var t3 = 200
  p.forEach(function () {})
  [t1, t2, t3] = [3, 4, 5]

错误看起来像:

Uncaught TypeError: Cannot set property '200' of undefined

这看起来很奇怪。有什么办法吗?

更新:

目的:在 foreach 之后测试变量数组赋值,此代码仅用于测试

详细信息:

  1. 在 foreach 之后,如果定义新变量获取 [3,4,5],则没有问题。它只是 碰巧使用在 foreach 之前定义的 [t1,t2,t3]。无论 foreach 是否停止,都没关系。
  2. 使用 for 循环一切正常

感谢您的帮助。@Madison Courto 我试过了,但为什么呢?

2个回答

这是因为它仍在尝试运行 forEach 循环。

如果您要执行 p.forEach(function () {}); ,您会停止它。

但我不明白其目的。

Nathan
2019-11-26

我将进行尝试并假设您希望做这样的事情,无论如何这都会解决异常。

var p = [2, 3, 6];
var t = 0;
var t1 = 1;
var t2 = 100;
var t3 = 200;
p.forEach((number) => console.log(number));
p = [t1, t2, t3] = [3, 4, 5];
p.forEach((number) => console.log(number));
Madison Courto
2019-11-26