続くのfor ()
はどのステートメントでもかまいません。中かっこを使用したものでも、単一の式でも、空の式でもかまいません。for (...);
と同等for (...) {}
です。当然、これは自然に終了するforループと組み合わせてのみ使用する必要があります。そうしないと、手に無限ループが発生します。
カンマは事実上2年生のセミコロンです。それらはほとんど別々のステートメントを作成しますが、forループで機能します(そして他の場所で;これはそれらの非常にずさんな定義です)。
for (
// initialisation: declare three variables
var j, x, i = o.length;
// The loop check: when it gets to ``!i``, it will exit the loop
i;
// the increment clause, made of several "sub-statements"
j = parseInt(Math.random() * i),
x = o[--i],
o[i] = o[j],
o[j] = x
)
; // The body of the loop is an empty statement
これは、次のように、より読みやすい形式で表すことができます。
for (
// initialisation: declare three variables
var j, x, i = o.length;
// The loop check: when it gets to ``!i``, it will exit the loop
i;
// note the increment clause is empty
) {
j = parseInt(Math.random() * i);
x = o[--i];
o[i] = o[j];
o[j] = x;
}
whileループとして、それは次のようになります。
var j, x, i = o.length;
while (i) {
j = parseInt(Math.random() * i);
x = o[--i];
o[i] = o[j];
o[j] = x;
}