2016-01-22 46 views
0

我一直在努力編碼一段時間,功能似乎很好,但循環是痛苦的。在JS中爲for循環重新分配變量是什麼意思?

我對此非常瞭解,除了以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); 
} 
+0

開始內環從外部循環的當前迭代。 – Tushar

+0

對不起,我是一個新手,並且在幾天前開始編程,請您用低技術的語言來詳細說明一下嗎? – Adam

+0

你的內循環'j'從外循環('i')當前的任何迭代開始。所以如果'i' = 1,'j'將從1開始向上計數 – tymeJV

回答

0

不知道這是你的演唱會:j和i僅僅爲循環將貫穿索引佔位符。當第二個for循環將j賦值給i時,第一個for循環循環完成後,第二個for循環將從索引(文本中的位置)開始,從第一個for循環離開。

0

外部循環,定義var i = 0的循環正在循環顯示文本字符串的字符索引。對於每個字符索引,if語句檢查它是否是「E」。當i爲30時,字符串索引30處的字符(text[i])是第一個E. if返回true並在大括號中運行代碼。此時它開始一個新循環,設置j等於i(這是30),並且子循環運行,而j小於你的名字長度(4)加上i(30)或34。該子循環將j索引(text[j])處的字母推送到hits

0

這意味着對於外循環的每次迭代(或i循環),j變量最初將具有您的i變量的值。因此,對於外循環的第一次迭代,i0所以j最初爲0,在第二次迭代中i1因此j得到重新初始化爲1。等等。

0

for循環的以下定義取自。

爲(1語句;語句2;語句3){ 代碼塊被執行}環(碼塊)開始之前

聲明1被執行。

聲明2定義了運行循環的條件(代碼爲 塊)。

語句3在每次執行循環(代碼塊) 後執行。

在你的情況,var j=i是在循環之前執行,因此text[j]將在開始是text[i]和,每次j增加,text[j]text[i]之後到來的元素。

因此,迭代去text[i] - >text[i+1] - > - >text[myName.length + i - 1]

相關問題