为什么类内嵌循环似乎遵循不同的赋值规则

Why do class embedded loops appear to follow different assignment rules?

本文关键字:规则 赋值 循环 为什么      更新时间:2023-09-26

好了,这是一个类,在构造函数中有一个六项数组

class forLoopProblem {
  constructor() {
    this.a = [5,8,7,4,6,18];
  }

我想做的是使用数组的长度来限制

以下的for循环中的迭代次数
  iterate(ap1) {
    for (i = 0; i <= this.a.length; i++) {
      console.log(i);
    }
  }
}
var internalVar = new forLoopProblem();

不幸的是,internalVar.iterate()产生一个异常,说明a没有定义。

  log() {
    console.log(this.a.length);
    console.log(this.a);
  }
}
var internalVar = new forLoopProblem();

但是如果a没有定义,那么为什么internalVar.log()的行为如预期的那样,将6与数组的内容一起打印到控制台?

起初我认为6可能是一个字符串,需要在循环赋值之前转换为整数。所以我尝试了parseInt(),但没有工作。无论如何,异常说变量没有定义,所以我不认为这是一个解析问题。

我甚至可以使用a将初始迭代变量赋值为6,如下所示:

    for (i = this.a.length; i <= 10; i++) {

产生6, 7, 8, 910作为控制台输出。

那么限制器规范给出了什么?

适合我,尽管我必须在for循环中定义i:

JavaScript

class forLoopProblem {
  constructor() {
    this.a = [5,8,7,4,6,18];
  }
  itterate(ap1) {
    for (var i = 0; i <= this.a.length; i++) {
      console.log(i);
    }
  }
}
var internalVar = new forLoopProblem();
internalVar.itterate(); //0, 1, 2, 3, 4, 5, 6

测试:

  • Chrome - Works
  • Firefox - Works
  • 歌剧-作品
  • IE10 -不工作
  • Safari (Win8) -不工作