嵌套循环完成循环后,变量j 是否会重置为零?我认为是这样,因为我们从头开始,但我想确保所有专家与我一致。另外,在哪里可以在教科书中找到答案呢?
const userTextInput = "Hello my name is Luka";
const vowels = ["a", "e", "u", "e", "i"];
for(let i = 0; i <= userTextInput.length; i = i + 1){
for(let j = 0; j <= vowels.length; j = j + 1){
if(userTextInput[i] === vowels[j]){
console.log(vowels[j]);
}
}
}
答案 0 :(得分:1)
从技术上讲,并不完全是。当嵌套的lop完成后,j
将不会被定义。仅当它再次开始(对于i
的下一次迭代)时,j
才会被重置。
例如,以下内容将给您一个j is not defined
错误。
for (let j = 0; j < 5; j++)
;
console.log(j);
答案 1 :(得分:1)
以下步骤可以帮助您理解代码:
变量j
仅存在于嵌套循环内。
当嵌套循环结束时,意味着j <= vowels.length
变为false
,代码退出循环。
j
。 j
被销毁。 现在,外部for循环再次继续,i
递增。
这一次再次创建了一个新变量j
并将其初始化为0
。
这是在i <= userTextInput.length;
为true
答案 2 :(得分:1)
请清楚一点,循环在这里没有做任何特别的事情。 您会在每次进入循环时重置变量。
for
循环包含3个部分(for (1; 2; 3) {}
):
因此,当您执行此操作时:
for (let j = 0; j < 5; j++) {}
您要声明j
并将其设置为0。此总是发生在进入循环之前。然后,在j
小于5时执行循环体,并在每次迭代后j
递增1。
因为您在j
语句中声明了for
,所以它仅存在于for
循环中。当退出循环时,变量消失了。
但是,即使变量仍然存在于循环外部,您也可以在下次进入循环时将其重置,因为您正在执行j = 0
。
在此示例中,我将变量声明为for
循环外,因此它仍然存在于循环外:
let j = 0;
for (let i = 0; i < 5; i++) {
for (; j < 5; j++) {
console.log(`iteration ${j}`);
}
}
console.log(i);
console.log(j);
// Prints:
// iteration 0
// iteration 1
// iteration 2
// iteration 3
// iteration 4
// undefined
// 4
我省略了for循环的第一部分,因此j
永远不会重置。这将导致内部循环仅运行5次,如果每次都将变量重置,则将运行25次。
答案 3 :(得分:0)
是的,每次循环开始时,它都会重新设置为您初始化的值。对于您的情况,是0。