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

时间:2016-06-28 13:04:41

标签: javascript class for-loop

好吧,所以这里是一个在构造函数中有六项数组的类。

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++) {

生成678910作为控制台输出。

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

1 个答案:

答案 0 :(得分:1)

适合我,虽然我必须在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
  • Opera - Works
  • IE10 - 不起作用
  • Safari(Win8) - 无效