JavaScriptfor循环如何执行?
How JavaScript for loop executed?
for 循环 之后的代码在顶部的 for 循环 之前执行。 Javascript是同步执行的,为什么先执行for循环后的行?
function solution(A) {
let diff = [];
for (let i = 1; i < A.length; i++) {
let sum1 = 0;
let sum2 = 0;
for (let j = 0; j < i - 1; j++) {
sum1 += A[j];
console.log('Why this is executing later? ' + sum1);
}
for (let k = i; k < A.length; k++) {
sum2 += A[k];
}
console.log('Why this is executing frist? ' + sum1);
diff.push(Math.abs(sum1 - sum2));
}
return Math.min(...diff);
}
solution([1,2,3,4,5]);
您的外循环第一次运行时,i
将为 1
。您的内部循环检查 j<i-1
和 j
是否从 0
开始。所以你的内循环第一次执行时,会检查0 < 0
是否为false,然后立即退出,不执行内循环
您的问题是带有您的 Why this is executing later
消息的代码在外循环的第一个 运行 中 根本 没有执行。
当您在 for(let i=1; i<A.length; i++){
处进入第一个循环时,i
将是 1
。
现在你点击 for(let j=0; j<i-1; j++){
但 i-1
是 1-1
(因为 i
是 1
)所以循环将执行 0
次。所以Why this is executing later
不会被执行。
因此下一个 console.log
将要执行的消息是带有 Why this is executing frist
的消息。
for 循环 之后的代码在顶部的 for 循环 之前执行。 Javascript是同步执行的,为什么先执行for循环后的行?
function solution(A) {
let diff = [];
for (let i = 1; i < A.length; i++) {
let sum1 = 0;
let sum2 = 0;
for (let j = 0; j < i - 1; j++) {
sum1 += A[j];
console.log('Why this is executing later? ' + sum1);
}
for (let k = i; k < A.length; k++) {
sum2 += A[k];
}
console.log('Why this is executing frist? ' + sum1);
diff.push(Math.abs(sum1 - sum2));
}
return Math.min(...diff);
}
solution([1,2,3,4,5]);
您的外循环第一次运行时,i
将为 1
。您的内部循环检查 j<i-1
和 j
是否从 0
开始。所以你的内循环第一次执行时,会检查0 < 0
是否为false,然后立即退出,不执行内循环
您的问题是带有您的 Why this is executing later
消息的代码在外循环的第一个 运行 中 根本 没有执行。
当您在 for(let i=1; i<A.length; i++){
处进入第一个循环时,i
将是 1
。
现在你点击 for(let j=0; j<i-1; j++){
但 i-1
是 1-1
(因为 i
是 1
)所以循环将执行 0
次。所以Why this is executing later
不会被执行。
因此下一个 console.log
将要执行的消息是带有 Why this is executing frist
的消息。