84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
構文は同じですが、JavaScript は内部的にこの 2 つをどのように区別するのでしょうか?
演算対象の変数のデータ型で判断するのでしょうか?それとも、変数が使用される場所に基づいていますか?それともどちらでもないですか?
JavaScript パーサーは、3 つのドットが表示される文法コンテキストを分析することによってこれを判断します。
これらの 3 つのポイントが配列リテラル、関数呼び出し、関数パラメーターのいずれで使用されるかを考慮します。
スプレッド演算子について: 配列リテラルおよび関数呼び出しで 3 つのドットが使用されている場合、それはスプレッド演算子とみなされます。
残りのパラメータ演算子の場合: 関数定義のパラメータで 3 つのドットが使用されている場合、それは残りのパラメータ演算子とみなされます。
...は演算子ではありません。これは、forステートメントの()と同様に、主要な構文です (これらは、グループ化演算子のインスタンスではなく、for構文の一部です)。演算子は、spread およびrest 構文のようには機能しません。
...
for
()
各位置のうち 1 つだけが有効で、もう 1 つは無効であるため、パーサーは、使用している位置によって、どちらを使用しているかを認識します。例えば:### リーリー
リーリー
JavaScript パーサーは、3 つのドットが表示される文法コンテキストを分析することによってこれを判断します。
これらの 3 つのポイントが配列リテラル、関数呼び出し、関数パラメーターのいずれで使用されるかを考慮します。
スプレッド演算子について: 配列リテラルおよび関数呼び出しで 3 つのドットが使用されている場合、それはスプレッド演算子とみなされます。
残りのパラメータ演算子の場合: 関数定義のパラメータで 3 つのドットが使用されている場合、それは残りのパラメータ演算子とみなされます。
...
は演算子ではありません。これは、for
ステートメントの()
と同様に、主要な構文です (これらは、グループ化演算子のインスタンスではなく、for
構文の一部です)。演算子は、spread およびrest 構文のようには機能しません。各位置のうち 1 つだけが有効で、もう 1 つは無効であるため、パーサーは、使用している位置によって、どちらを使用しているかを認識します。例えば:### リーリー
...剰余構文は構造化パターン (1 と 2) と引数リスト (3) で使用されているため、どちらの場合でも剰余構文を使用していることは明らかです。 そして次の場合:リーリー
...配列リテラル (1)、オブジェクト リテラル (2)、および関数呼び出しのパラメーター リスト (3) で使用するため、これは明らかに剰余ではなく拡張です。