Javascript 循环警报
Javascript loop with alert
嗨,我对 alert
和 console.log
感到困惑
var count = [];
function iterate(number) {
count.push(number);
for (i = 0; i < count.length; i++) {
console.log(count[i]);
}
}
iterate(2);
iterate(3);
iterate(4);
控制台会给我 2,2,3,2,3,4 但是当我将 console.log(count[i]) 更改为 alert(count[i]);它只会重复 2 次 3 次,为什么?
var count = [];
function iterate(number) {
count.push(number);
for (i = 0; i < count.length; i++) {
alert(count[i]);
}
}
iterate(2);
iterate(3);
iterate(4);
上面不会做到这一点,但会 on JSBin.
两个版本显示相同的内容。
count
开始为空。
在第一次调用时,您将 2
推入 count
,因此它有 [2]
,然后只循环一次 (i == 0
),输出 count[0]
(即 2)。
在第二次调用时,您将 3
推入 count
,因此其中包含 [2, 3]
,然后循环两次(i == 0
、i == 1
) , 显示 count[0]
(2) 和 count[1]
(3).
在第三次调用时,您将 4
推入 count
,因此其中包含 [2, 3, 4]
,并循环三次(i == 0
、i == 1
, i == 2
), 显示 count[0]
(2), count[1]
(3), 和 count[2]
(4).
回复您的评论:
I mean when I try it in JS Bin(alert type), it will just alert 2 on the first ,2nd and 3rd call
啊!您正在 运行进入 JSBin 的 "infinite loop protection." 如果您 运行 它 here 并查看 Web 控制台,您会看到
Exiting potential infinite loop at line 5. To disable loop protection: add "// noprotect" to your code
...但是如果您 运行 the output page of that,它会显示完整的结果。
alert
版本在开发模式下触发了无限循环保护,因为它看到相同的代码不止一次发生但间隔超过 100 毫秒(因为你关闭 alert
时的延迟) ).
嗨,我对 alert
和 console.log
var count = [];
function iterate(number) {
count.push(number);
for (i = 0; i < count.length; i++) {
console.log(count[i]);
}
}
iterate(2);
iterate(3);
iterate(4);
控制台会给我 2,2,3,2,3,4 但是当我将 console.log(count[i]) 更改为 alert(count[i]);它只会重复 2 次 3 次,为什么?
var count = [];
function iterate(number) {
count.push(number);
for (i = 0; i < count.length; i++) {
alert(count[i]);
}
}
iterate(2);
iterate(3);
iterate(4);
上面不会做到这一点,但会 on JSBin.
两个版本显示相同的内容。
count
开始为空。
在第一次调用时,您将 2
推入 count
,因此它有 [2]
,然后只循环一次 (i == 0
),输出 count[0]
(即 2)。
在第二次调用时,您将 3
推入 count
,因此其中包含 [2, 3]
,然后循环两次(i == 0
、i == 1
) , 显示 count[0]
(2) 和 count[1]
(3).
在第三次调用时,您将 4
推入 count
,因此其中包含 [2, 3, 4]
,并循环三次(i == 0
、i == 1
, i == 2
), 显示 count[0]
(2), count[1]
(3), 和 count[2]
(4).
回复您的评论:
I mean when I try it in JS Bin(alert type), it will just alert 2 on the first ,2nd and 3rd call
啊!您正在 运行进入 JSBin 的 "infinite loop protection." 如果您 运行 它 here 并查看 Web 控制台,您会看到
Exiting potential infinite loop at line 5. To disable loop protection: add "// noprotect" to your code
...但是如果您 运行 the output page of that,它会显示完整的结果。
alert
版本在开发模式下触发了无限循环保护,因为它看到相同的代码不止一次发生但间隔超过 100 毫秒(因为你关闭 alert
时的延迟) ).