1

私は多くの例を見てきました:

var foo = 1, bar = 2, baz = 3;

しかし、私はなしで同じことをすることができvarますか? 例:

// Declare at top of block for readability's sake:
var foo, bar, baz;
// ... stuff here ...
// Later in script, I finally get around to initializing above vars:
foo = 1, bar = 2, baz = 3; // Is using commas without var legal?

言い換えれば、varキーワードなしで複数の変数を初期化/設定する行を持つことはjavascriptで合法ですか? これが許可されているかどうか、および/または十分にサポートされているかどうかについての決定的なドキュメントを見つけることができませんでした。

別の方法は次のとおりです。

foo = 1; bar = 2; baz = 3;

私の質問を促した現実の状況は次のとおりです。

for (var i = 0, l = haystack.length; i < l; i++) { ... }

for... 次のように、ループ内の可変宣言を親ブロックの最上位レベルに移動したいと思います。

var i, l;

// ... stuff here ...

for (i = 0, l = haystack.length; i < l; i++) { ... }

var...しかし、ステートメントの先頭で使用する場合にのみ、コンマを使用したことがあります。上記は合法(?)ですか、そうでなければなりません:

var i, l;

// ... stuff here ...

for (i = 0; l = haystack.length; i < l; i++) { ... }

(追加されたセミコロンに注意してください。)

4

1 に答える 1

4

JavaScript では、式をコンマで区切ることができ、式は左から右に実行され、右端の式の値を返します。

はい、一般的にこれを行うことができます。以下は正当な構文です。

for (i = 0, l = haystack.length; i < l; i++) { ... }

コンマ演算子の詳細については、MDN Docsを参照してください。

于 2013-03-12T20:01:03.543 に答える