ホームページ > ウェブフロントエンド > jsチュートリアル > ES6 ではアロー関数には独自の引数オブ​​ジェクトがありますか?

ES6 ではアロー関数には独自の引数オブ​​ジェクトがありますか?

Barbara Streisand
リリース: 2024-10-18 15:57:03
オリジナル
205 人が閲覧しました

Do Arrow Functions Have Their Own Arguments Object in ES6?

ES6 アロー関数: 引数の謎

JavaScript の領域では、アロー関数が従来のアロー関数の簡潔でエレガントな代替として登場しました。関数宣言。しかし、アロー関数内の引数オブ​​ジェクトの扱いは論争を巻き起こし、さまざまなプラットフォーム間で動作の矛盾が生じています。

TC39 委員会からの最初の勧告では、アロー関数は独自の引数バインディングを持たず、代わりにバインディングに依存すべきであると示唆されています。親スコープの引数オブ​​ジェクト。ただし、一部のブラウザ (Chrome、Firefox、Node) はこの概念に矛盾しているようで、アロー関数がそのスコープを囲む引数オブジェクトにアクセスすることを許可しています。

この曖昧さを明確にするために、公式ドキュメントを詳しく調べてみましょう:

  • ES6 仕様、セクション 14.2.11.1: 「アロー関数式は、[[ThisMode]] が字句に設定されている関数として評価されます。」これは、アロー関数が親スコープの字句環境を継承することを意味します。
  • ES6 仕様、セクション 18: 「(18 a) アロー関数には引数オブジェクトがありません。」このステートメントは、アロー関数が独自の引数オブ​​ジェクトを持たないことを明示的に確認しています。

これらの公式文書に基づくと、Chrome、Firefox、および Node で観察される動作が誤っていることは明らかです。アロー関数は引数バインディングを意図したものではなく、この動作に依存すると信頼性が低く混乱を招くコードにつながる可能性があります。

したがって、開発者はアロー関数の意図されたセマンティクスを遵守し、アロー関数の存在に依存することを避ける必要があります。引数オブジェクトはそのスコープ内にあります。これにより、すべての JavaScript プラットフォームにわたって一貫性のある予測可能な動作が保証されます。

以上がES6 ではアロー関数には独自の引数オブ​​ジェクトがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート