検索
ホームページウェブフロントエンドフロントエンドQ&Aes6のアロー機能を使う際の注意点は何ですか?

注: 1. アロー関数は、上位スコープ内の this のポイントと一致するように、関数内の this のポイントを変更します; 2. これをコンストラクターとして使用することはできません。コマンドは使用できません; 3. いいえ 引数オブジェクトは使用できます; 4. yield コマンドは使用できず、ジェネレーター関数として使用できません。

es6のアロー機能を使う際の注意点は何ですか?

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

es6 の新しい構文では、アロー関数が登場します。

ES6 では、「矢印」(=>) を使用して関数を定義できます。

		function fun(a){ return a; }
// ↓ 去掉 function 在 ( ) 和 { } 之间添加 => 
		var fun = (a) => { return a; }  
// ↓ 如果只有一个形参可省略 ( ) 如果一个形参都没有,必须加( )         
		var fun = a => { return a; }  
// ↓ 如果函数体只有一句话,可省略{ },如果仅有的这句话还是 return, 则必须省略 return         
		var fun = a => a

ES6 のアロー関数に関する注意事項

(1) アロー関数は、関数内の this のポイントを、関数内の this のポイントと一致するように変更します。上位スコープ

関数本体内の this オブジェクトは、それが使用されるオブジェクトではなく、定義されるオブジェクトです。

(2) はコンストラクターとして使用できません。つまり、新しいコマンドは使用できません。そうでない場合は、エラーがスローされます。

(3) 引数オブジェクトは関数本体に存在しないため使用できません。これを使用したい場合は、代わりにrestパラメータを使用できます。

(4) yield コマンドが使用できないため、アロー関数をジェネレーター関数として使用できません。

上記 4 点のうち、特に注目すべき点は 1 つ目です。このオブジェクトのポインタは可変ですが、アロー関数では固定です。

function foo() {
  setTimeout(() => {
    console.log('id:', this.id);
  }, 100);
}

var id = 21;

foo.call({ id: 42 });
// id: 42

上記のコードでは、setTimeout のパラメータはアロー関数です。このアロー関数の定義は、foo 関数が生成されたときに有効になり、実際の実行は 100 ミリ秒後まで待機しません。 。通常の関数であれば、実行時にグローバルオブジェクトウィンドウを指すはずで、このとき21が出力されるはずです。ただし、アロー関数により、this は関数定義が有効になるオブジェクト (この場合は {id: 42}) を常に指すため、出力は 42 になります。
アロー関数は、setTimeout の this が、バインディングが実行されるスコープを指すのではなく、バインディングが定義されているスコープを指すようにすることができます。別の例を示します。

function Timer() {
  this.s1 = 0;
  this.s2 = 0;
  // 箭头函数
  setInterval(() => this.s1++, 1000);
  // 普通函数
  setInterval(function () {
    this.s2++;
  }, 1000);
}

var timer = new Timer();

setTimeout(() => console.log('s1: ', timer.s1), 3100);
setTimeout(() => console.log('s2: ', timer.s2), 3100);
// s1: 3
// s2: 0

上記のコードでは、Timer 関数内に 2 つのタイマーがそれぞれアロー関数と通常の関数を使用して設定されています。前者の this バインディングはスコープ (つまり、Timer 関数) で定義され、後者の this バインディングは、それが実行されるスコープ (つまり、グローバル オブジェクト) を指します。したがって、3100 ミリ秒後、timer.s1 は 3 回更新されましたが、timer.s2 は 1 回も更新されていません。

アロー関数を使用すると、この点を修正できます。この機能は、コールバック関数をカプセル化する場合に非常に役立ちます。以下は、DOM イベントのコールバック関数がオブジェクトにカプセル化される例です。

var handler = {
  id: '123456',

  init: function() {
    document.addEventListener('click',
      event => this.doSomething(event.type), false);
  },

  doSomething: function(type) {
    console.log('Handling ' + type  + ' for ' + this.id);
  }
};

上記のコードの init メソッドでは、アロー関数が使用されています。これにより、アロー関数内の this が常にハンドラー オブジェクトを指すようになります。そうしないと、コールバック関数の実行時に this.doSomething 行でエラーが報告されます。これは、現時点ではこれがドキュメント オブジェクトを指しているためです。

このポインティングの固定は、アロー関数内に this をバインドするメカニズムがあるためではありません。実際の理由は、アロー関数には独自の this がまったくなく、内部の this がこれは外側のコードブロックです。これがないため、コンストラクターとして使用できません。

つまり、アロー関数を ES5 に変換するコードは次のとおりです。

// ES6
function foo() {
  setTimeout(() => {
    console.log('id:', this.id);
  }, 100);
}

// ES5
function foo() {
  var _this = this;

  setTimeout(function () {
    console.log('id:', _this.id);
  }, 100);
}

上記のコードでは、変換された ES5 バージョンは、アロー関数が独自の this をまったく持たず、外側の this を参照していることを明確に示しています。

【関連する推奨事項: JavaScript ビデオ チュートリアル Web フロントエンド ]

以上がes6のアロー機能を使う際の注意点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

Reactは、メタがユーザーインターフェイスを構築するために開発したJavaScriptライブラリであり、そのコアはコンポーネント開発と仮想DOMテクノロジーです。 1。コンポーネントと状態管理:Reactは、コンポーネント(関数またはクラス)とフック(UseStateなど)を介して状態を管理し、コードの再利用性とメンテナンスを改善します。 2。仮想DOMとパフォーマンスの最適化:仮想DOMを介して、実際のDOMを効率的に更新してパフォーマンスを向上させます。 3.ライフサイクルとフック:フック(使用効果など)は、関数コンポーネントがライフサイクルを管理し、副作用操作を実行できるようにします。 4。使用例:基本的なHelloworldコンポーネントから高度なグローバル州管理(USECONTEXTおよび

Reactのエコシステム:ライブラリ、ツール、およびベストプラクティスReactのエコシステム:ライブラリ、ツール、およびベストプラクティスApr 18, 2025 am 12:23 AM

Reactエコシステムには、状態管理ライブラリ(Reduxなど)、ルーティングライブラリ(Reactrouterなど)、UIコンポーネントライブラリ(材料-UIなど)、テストツール(JESTなど)、およびビルディングツール(Webpackなど)が含まれます。これらのツールは、開発者がアプリケーションを効率的に開発および維持し、コードの品質と開発効率を向上させるのを支援するために協力します。

反応とフロントエンドの開発:包括的な概要反応とフロントエンドの開発:包括的な概要Apr 18, 2025 am 12:23 AM

Reactは、ユーザーインターフェイスを構築するためにFacebookが開発したJavaScriptライブラリです。 1. UI開発の効率とパフォーマンスを改善するために、コンポーネントおよび仮想DOMテクノロジーを採用しています。 2。Reactのコア概念には、コンポーネント化、状態管理(UseStateやUseEffectなど)、および仮想DOMの作業原則が含まれます。 3。実際のアプリケーションでは、基本的なコンポーネントレンダリングから高度な非同期データ処理へのReactサポートがサポートされます。 4.主要な属性の追加や誤ったステータスの更新を忘れるなどの一般的なエラーは、ReactDevtoolsとログを介してデバッグできます。 5.パフォーマンスの最適化とベストプラクティスには、React.Memo、コードセグメンテーション、コードの読み取り可能な状態を維持し、信頼性を維持することが含まれます

HTMLの反応の力:現代のWeb開発HTMLの反応の力:現代のWeb開発Apr 18, 2025 am 12:22 AM

HTMLでのReactの適用により、コンポーネントと仮想DOMを通じてWeb開発の効率と柔軟性が向上します。 1)反応コンポーネントのアイデアは、UIを再利用可能なユニットに分解して、管理を簡素化します。 2)仮想DOM最適化パフォーマンス、拡散アルゴリズムを介してDOM操作を最小限に抑えます。 3)JSX構文により、JavaScriptでHTMLを作成して開発効率を向上させることができます。 4)UseStateフックを使用して状態を管理し、動的なコンテンツの更新を実現します。 5)最適化戦略には、React.memoとusecallbackを使用して不必要なレンダリングを減らすことが含まれます。

Reactの主要な機能を理解する:フロントエンドの視点Reactの主要な機能を理解する:フロントエンドの視点Apr 18, 2025 am 12:15 AM

Reactの主な機能には、コンポーネント思考、国家管理、仮想DOMが含まれます。 1)コンポーネント化のアイデアにより、UIを再利用可能な部分に分割して、コードの読みやすさと保守性を向上させることができます。 2)状態管理は、状態および小道具を通じて動的データを管理し、変更を変更しますUIの更新をトリガーします。 3)仮想DOM最適化パフォーマンス、メモリ内のDOMレプリカの最小操作の計算を通じてUIを更新します。

Reactを使用したフロントエンド開発:利点とテクニックReactを使用したフロントエンド開発:利点とテクニックApr 17, 2025 am 12:25 AM

Reactの利点は、その柔軟性と効率性であり、これは以下に反映されています。1)コンポーネントベースの設計により、コードの再利用性が向上します。 2)仮想DOMテクノロジーは、特に大量のデータ更新を処理する場合、パフォーマンスを最適化します。 3)リッチエコシステムは、多数のサードパーティライブラリとツールを提供します。 Reactがどのように機能し、例を使用するかを理解することにより、そのコアコンセプトとベストプラクティスをマスターして、効率的で保守可能なユーザーインターフェイスを構築できます。

React vs.他のフレームワーク:比較と対照オプションReact vs.他のフレームワーク:比較と対照オプションApr 17, 2025 am 12:23 AM

Reactは、大規模で複雑なアプリケーションに適したユーザーインターフェイスを構築するためのJavaScriptライブラリです。 1. Reactのコアはコンポーネント化と仮想DOMであり、UIレンダリングパフォーマンスを向上させます。 2。Vueと比較して、Reactはより柔軟性がありますが、大規模なプロジェクトに適した急な学習曲線があります。 3。Angularと比較して、Reactはより軽く、コミュニティの生態学に依存し、柔軟性を必要とするプロジェクトに適しています。

HTMLでのDemyStifice React:すべてがどのように機能するかHTMLでのDemyStifice React:すべてがどのように機能するかApr 17, 2025 am 12:21 AM

Reactは、仮想Domを介してHTMLで動作します。 1)ReactはJSX構文を使用してHTMLのような構造を書きます。 2)仮想DOM管理UIアップデート、拡散アルゴリズムによる効率的なレンダリング。 3)Reactdom.render()を使用して、コンポーネントを実際のDOMにレンダリングします。 4)最適化とベストプラクティスには、React.MEMOとコンポーネントの分割を使用して、パフォーマンスと保守性を向上させることが含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境