javascriptでは、構文は常に最後の値を返すことを知っています(1, 'a', 5, ... 'b')
が、この構文は実際にはどういう意味ですか?私が見たとき(1, 2)
-確かにほとんど決してありません-その構文をどのように解析する必要がありますか?
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) { ... }
これは、2 つの式を評価して 2 番目の式を返すコンマ operatorです。引数は左から右に評価されるため、コンマで区切られた引数のリストがある場合、最後のものが返されます。JavaScript スタイルの要素から:
コンマ演算子は、JavaScript の構文の多くと同様に、C から借用されました。コンマ演算子は 2 つの値を取り、2 番目の値を返します。言語定義に存在すると、特定のコーディングエラーが隠される傾向があるため、コンパイラはいくつかのエラーに気付かない傾向があります. コンマ演算子を避け、代わりにセミコロン ステートメント区切り記号を使用することをお勧めします。
括弧 - 優先順位を変更する単なる演算子です。したがって、この場合はそれらを省略できます。
これは、コンマで1, 2
区切られた 2 つの式です。