0
因此,這種排序算法是我從這裏拉下來的,我只是試圖圍繞它的工作原理。當我把alert(i)
置於這個位置時,它會按預期五次提醒。什麼導致這個奇怪的洗牌算法行爲?
function shuffle(a) {
for (let i = a.length; i; i--) {
alert(i)
let j = Math.floor(Math.random() * i);
[a[i - 1], a[j]] = [a[j], a[i - 1]];
}
}
但是,如果我把它放在這個位置,它只會提醒一次。
function shuffle(a) {
for (let i = a.length; i; i--) {
let j = Math.floor(Math.random() * i);
alert(i)
[a[i - 1], a[j]] = [a[j], a[i - 1]];
}
}
這是什麼原因造成的?循環還沒有運行5次?
我以爲它注入分號。這是什麼使它只喚醒一次警報? –
自動分號斷言有些破碎的功能,只是總是使用分號。打F12看看,什麼是打破代碼... – Teemu
我嘗試了你的代碼(用分號)。我得到相同數量的警報。 [IE - >點擊F12] | [Chrome - > Ctrl + Shift + I] | [火狐 - >按Ctrl + Shift + Q] – Marcus