什么在JS中的for循环中重新赋值变量意味着什么?

时间:2016-01-22 16:21:53

标签: javascript

我一直在努力编码一段时间,功能似乎完全没问题,但循环很痛苦。

我非常理解这一点,除了以j = i开头的一行,它指的是什么?

text = "Blah blah blah blah blah blah Eric \
blah blah blah Eric blaeh blah Eric blah blah \
blah blah blah blah blah Eric";

var myName = "Eric";
var hits = [];


for(var i = 0; i < text.length; i++) {
if (text[i] === "E") {



    for(var j = i; j < (myName.length + i); j++) {
        hits.push(text[j]);
      }
   }
 }

if (hits.length === 0) {
console.log("Your name wasn't found!");
} else {
console.log(hits);
}

4 个答案:

答案 0 :(得分:0)

不确定这是否是你的音乐会:j和i只是循环将运行的索引的占位符。当第二个for循环将j分配给i时,一旦第一个for循环循环,第二个for循环将从索引(文本中的位置)开始,我从第一个for循环中离开。

答案 1 :(得分:0)

外部循环,即定义var i = 0的循环,循环遍历文本字符串的字符索引。对于每个字符索引,if语句检查它是否为&#34; E&#34;。当i为30时,字符串索引30处的字符(text[i])是第一个E. if返回true并在大括号中运行代码。此时它启动一个新循环,j设置为i(即30),子循环运行,j小于你的名字长度(4)加上i(30),或34.该子循环的每次迭代都会将索引jtext[j])的字母推送到hits

答案 2 :(得分:0)

这意味着对于外部循环(或i循环)的每次迭代,j变量最初将具有i变量的值。因此,对于外部循环的第一次迭代,i0,因此j最初为0,在第二次迭代i1所以j重新初始化为1。等等。

答案 3 :(得分:0)

for循环的以下定义取自this page

  

for(声明1;声明2;声明3){        要执行的代码块}

     

语句1在循环(代码块)开始之前执行。

     

语句2定义了运行循环的条件(代码   块)。

     

语句3在循环(代码块)之后每次执行   已被执行。

在您的情况下,var j=i在循环之前执行,因此text[j]将在text[i]开始,每次j增加{{1}将是text[j]之后的元素。

因此,迭代进行text[i] - &gt; text[i] - &gt; ... - &gt; text[i+1]