JavaScript でスプレッド演算子と剰余演算子を区別するにはどうすればよいですか?
P粉022501495
P粉022501495 2023-09-04 11:25:07
0
2
387

構文は同じですが、JavaScript は内部的にこの 2 つをどのように区別するのでしょうか?

演算対象の変数のデータ型で判断するのでしょうか?それとも、変数が使用される場所に基づいていますか?それともどちらでもないですか?

P粉022501495
P粉022501495

全員に返信 (2)
P粉545910687

JavaScript パーサーは、3 つのドットが表示される文法コンテキストを分析することによってこれを判断します。

これらの 3 つのポイントが配列リテラル、関数呼び出し、関数パラメーターのいずれで使用されるかを考慮します。

スプレッド演算子について: 配列リテラルおよび関数呼び出しで 3 つのドットが使用されている場合、それはスプレッド演算子とみなされます。

残りのパラメータ演算子の場合: 関数定義のパラメータで 3 つのドットが使用されている場合、それは残りのパラメータ演算子とみなされます。

いいねを押す+0
    P粉549412038

    ...は演算子ではありません。これは、forステートメントの()と同様に、主要な構文です (これらは、グループ化演算子のインスタンスではなく、for構文の一部です)。演算子は、spread およびrest 構文のようには機能しません。

    各位置のうち 1 つだけが有効で、もう 1 つは無効であるため、パーサーは、使用している位置によって、どちらを使用しているかを認識します。例えば:### リーリー

    ...剰余構文は構造化パターン (1 と 2) と引数リスト (3) で使用されているため、どちらの場合でも剰余構文を使用していることは明らかです。

    そして次の場合:

    リーリー

    ...配列リテラル (1)、オブジェクト リテラル (2)、および関数呼び出しのパラメーター リスト (3) で使用するため、これは明らかに剰余ではなく拡張です。

    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!