7

javascriptでは、構文は常に最後の値を返すことを知っています(1, 'a', 5, ... 'b')が、この構文は実際にはどういう意味ですか?私が見たとき(1, 2)-確かにほとんど決してありません-その構文をどのように解析する必要がありますか?

4

5 に答える 5

5

個々の式 (コンマの間のビット) が評価され、式全体が最後の式の値を取ります。したがって、例のような一連の数値および文字列リテラルをリストすることは、無意味です。

(1, 'a', 5, ... 'b')
// does the same thing as
('b')

...だから、最後以外はすべて省略しても構いません。ただし、個々の式が関数呼び出しまたは代入であるため、他の効果がある場合は、それらを除外することはできません。

この構文を使用する唯一の正当な理由は、forステートメント内にあることですfor。構文は次のとおりです。

for([init]; [condition]; [final-expression])

[init]...パーツ内、[condition]または またはパーツ内でセミコロンを使用することはできません[final-expression]。ただし、カンマを使用して複数の式を含めることができます。

for(x = 0, y = 100, z = 1000; x < y; x++, y--, z-=100) { ... }
于 2012-08-23T21:58:51.083 に答える
2

演算子は両方の,引数を評価し、最後の引数を返します。

forループで最も一般的に使用されます。

for( i=0, j=0; ...)

MDN ドキュメント

于 2012-08-23T21:57:04.447 に答える
2

コンマ演算子は各項目を評価し、最後の項目を返します。

var x = (1, 2, 3);
console.log(x == 3);  // true

ここにMozilla のドキュメントがあります

于 2012-08-23T21:57:39.640 に答える
1

これは、2 つの式を評価して 2 番目の式を返すコンマ operatorです。引数は左から右に評価されるため、コンマで区切られた引数のリストがある場合、最後のものが返されます。JavaScript スタイルの要素から:

コンマ演算子は、JavaScript の構文の多くと同様に、C から借用されました。コンマ演算子は 2 つの値を取り、2 番目の値を返します。言語定義に存在すると、特定のコーディングエラーが隠される傾向があるため、コンパイラはいくつかのエラーに気付かない傾向があります. コンマ演算子を避け、代わりにセミコロン ステートメント区切り記号を使用することをお勧めします。

于 2012-08-23T21:57:19.027 に答える
0

括弧 - 優先順位を変更する単なる演算子です。したがって、この場合はそれらを省略できます。

これは、コンマで1, 2区切られた 2 つの式です。

于 2012-08-23T21:54:21.443 に答える