それはコンマ演算子ではありません。コンマは、var
キーワードの構文の一部です。 var
キーワードは、変数のリストをカンマで区切って指定します。
この機能は仕様でVariableDeclarationList
と呼ばれている:あなたはBNFやRBNF記法に慣れていない場合は
Syntax
VariableStatement[Yield]:
var VariableDeclarationList[In, ?Yield];
VariableDeclarationList[In, Yield]:
VariableDeclaration[?In, ?Yield]
VariableDeclarationList[?In, ?Yield], VariableDeclaration[?In, ?Yield]
VariableDeclaration[In, Yield]:
BindingIdentifier[?Yield] Initializer[?In, ?Yield]opt
BindingPattern[?Yield] Initializer[?In, ?Yield]
:http://www.ecma-international.org/ecma-262/7.0/index.html#sec-variable-statement
var
キーワード構文は次のように指定されています。
VariableStatementは次のように定義される:仕様は、上記の意味
- VariableDeclaration:VariableDeclarationList
VariableDeclarationList続い
- ストリング
var
のいずれかとして定義されていますまたは
- VariableDeclarationList、変数宣言
- 注:これは再帰的な定義です。基本的には、 VariableDeclaration、VariableDeclaration、VariableDeclarationの無限のリストを定義しています...
VariableDeclarationが任意イニシャライザまたはイニシャライザ
- 注続い
- BindingPattern続い
- BindingIdentifierのように定義される:このBindingPattern定義が新しいES6のためのものです非構造化代入([a、b、c] = ...)
BindingIdentifier
、BindingPattern
とInitializer
の定義は、他の場所仕様で規定されています。
BindingIdentifier
の定義は基本的に可変名です。有効なBindingIdentifiers
はhello
またはx
またはy2
ですが、for
(キーワードであるため)または1k
(数字で始まるため)ではありません。
可変リストの定義を理解することは厳密には必要ではないので、私はBindingPattern
の定義を今は無視します。
Initializer
の定義は、記号=
の後に式が続きます。基本的に=
に続いて任意のjavascriptコード。
ので、VariableDeclaration
(NOT var
キーワード、それのほんの一部が)単に次のように定義されます
anyVariableName = anything
または
anyVariableName // remember, Initializer is optional
そしてvar
キーワードがいずれかのように定義されます。
var VariableDeclaration
または
var VariableDeclaration, VariableDeclaration, VariableDeclaration ...
So.
var x=10,
[a,b,c] = [100,200,300],
i,
j;
var {x,y,z} = {x:10,y:20,z:30},
a = 2,
b,
c,
[i,j,k]=["hello","cruel","world"];
その他の注意事項を:var
キーワード構文の有効な例は、我々はその後、BindingPattern
定義が含まれている場合
var
キーワード構文の有効な例も含めるなど
var x;
var x = 12;
var x,
y = "hello",
z;
var x = 0,
y,
z=100;
含ま:
var
キーワードがないと、VariableDeclaration
も発生する可能性があります。たとえば:何var
キーワードが存在しないため、この場合は
a = 40; // if this is the first time a is defined then it is
// automatically created as a global variable
、表示され、任意のカンマがvar
構文の一部ではないでしょう。どのvar
キーワードを指定せずにコンマはコンマ演算子であることを意味します
a = 10, b = 50; // comma operator
ご質問を大幅に変更しないでください。 – Qwertiy
特に回答が投稿されたとき。 – Qwertiy