ホームページ >ウェブフロントエンド >jsチュートリアル >ES6 で配列の分割により予期しない値が発生するのはなぜですか?

ES6 で配列の分割により予期しない値が発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-24 06:06:301034ブラウズ

Why Does Array Destructuring Result in Unexpected Values in ES6?

ES6 の配列分割の特徴

ES6 では、配列分割により、配列から値を抽出して割り当てるための簡潔な構文が提供されます。ただし、特定の構成では予期しない結果が生じる可能性があります。

提供されているコード スニペットでは次のような疑問が生じます:

なぜこのコードは配列の構造化後に予期しない値になるのですか?

<code class="javascript">let a, b, c;
[a, b] = ['A', 'B'];
[b, c] = ['BB', 'C'];
console.log(`a=${a} b=${b} c=${c}`);</code>

期待値: a=A、b=BB、c=C

実際: a=BB、b=C、c=未定義

答え:

問題は、通常はこれらの行を個別のステートメントとして区切るセミコロンの省略にあります。セミコロンがない場合、コードは単一のステートメントとして解析され、次のように異なる順序で評価されます。

<code class="javascript">let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);</code>
  • [a, b] = …;
  • (… = ['BB', 'C']) は、配列を左側に代入し、配列に評価する代入式です。
  • 'A', 'B' は配列リテラルのプロパティ参照です。
  • (b, c) はカンマ演算子を使用し、c (未定義) に評価されます。

このような誤解を避け、正しい評価を保証するには、(、[、/、-、-、または `.

以上がES6 で配列の分割により予期しない値が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。