亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
JavaScriptのMAPとReduceの違いは何ですか?
マップ機能はJavaScriptでどのように機能しますか?
JavaScriptで機能を削減するにはどうすれば機能しますか?
JavaScriptでマップを使用して削減できますか?
JavaScriptのMAPとForeachの違いは何ですか?
マップ関數(shù)を使用してJavaScriptの配列を変換するにはどうすればよいですか?
resid機能を使用して、javascriptの配列の要素を組み合わせた方法は?
JavaScriptのマップ関數(shù)の一般的なユースケースは何ですか?
JavaScriptのマップをデバッグまたは削減する方法は?
ホームページ ウェブフロントエンド jsチュートリアル MAPを使用して、機能的なJavaScriptで削減します

MAPを使用して、機能的なJavaScriptで削減します

Feb 18, 2025 am 09:10 AM

Using Map and Reduce in Functional JavaScript

コアポイント

  • javascriptネイティブArrayおよびmap()メソッドreduce()オブジェクトは、コードをより簡潔で読みやすく、メンテナンスにしやすくする強力な機能プログラミングツールです。
  • map()は、配列內(nèi)のすべての要素に作用し、変換されたコンテンツを含む同じ長さの別の配列を生成する基本的な機能プログラミング手法です。アレイオブジェクトにマッピング機能を追加することにより、ECMAScript 5は基本的な配列タイプを完全なファンチャーに変え、機能的なプログラミングを使いやすくします。
  • reduce()メソッド(ECMAScript 5の新しいメソッド)はmap()に似ていますが、別のファンクタを生成する代わりに、任意のタイプの単一の結(jié)果を生成します。アレイが単一の出力値に縮小されるように、配列の各要素に関數(shù)を適用します。
  • map()およびreduce()メソッドはパフォーマンスに影響を與える可能性がありますが、コードの品質(zhì)とそれらの使用に関する開発者の満足度の改善は、パフォーマンスへの一時的な影響を上回る可能性があります。著者は、開発のために機能的手法を使用し、現(xiàn)実世界の狀況での影響を測定する前に、特定のアプリケーションに適しているかどうかを決定することを推奨しています。 map() reduce() オブジェクトに基づいたネイティブ
および

メソッドが含まれます。 Array map()reduce()

をまだ使用していない場合は、今すぐ始めてください!ほとんどの最新のJavaScriptプラットフォームは、ECMAScript 5をネイティブにサポートしています。マッピングと規(guī)制により、コードをより簡潔にし、読みやすく、維持しやすくなり、よりエレガントな機能開発に導(dǎo)くことができます。

map()reduce()パフォーマンス:予防策もちろん、必要に応じて、コードの読み取りとメンテナンスはパフォーマンスとバランスをとる必要があります?,F(xiàn)在、ブラウザは、

ループなどのより面倒な従來のテクニックを使用してより効率的です。 私のアプローチは、通常、最初に読みやすく維持しやすいコードを作成し、実際の狀況で問題に気付いた場合にパフォーマンスを最適化することです。早期最適化はすべての悪の源です。

また、ブラウザが最適化されているため、

およびforを最適化すると、これらの方法を使用すると、JavaScriptエンジンの改善をより有効にする可能性があることも考慮してください。私がパフォーマンスの問題に直面していない限り、私は楽観的にコードを書き、必要な場合に備えて私のバックアップポケットで私のコードを魅力的にするパフォーマンスの微調(diào)整を行うことを好みます。

Map

map()を使用します

マッピングは、配列內(nèi)のすべての要素に作用し、同じ長さの別の配列(変換されたコンテンツを含む)を生成する基本的な機能プログラミング手法です。

より具體的には、単純なユースケースを考えてみましょう。たとえば、各単語の長さを含む配列に変換する必要がある?yún)g語の配列があるとします。 (これは、複雑なアプリケーションで通常実行する必要がある複雑なロケット科學(xué)のようなものではありませんが、この単純なケースでそれがどのように機能するかを理解することで、ケースに備えてコードを適用するのに役立ちます)。

アレイで

ループを使用して、今後説明したことを行う方法を既に知っているかもしれません。このように見えるかもしれません:for

var animals = ["cat","dog","fish"];
var lengths = [];
var item;
var count;
var loops = animals.length;
for (count = 0; count < loops; count++) {
  item = animals[count];
  lengths.push(item.length);
}
console.log(lengths); //[3, 3, 4]
私たちが行ったのは、いくつかの変數(shù)を定義しました。各アイテムを保存します。配列の各ループで動作します。一時的な內(nèi)部カウンター変數(shù)と

変數(shù)を使用して、animalsループを最適化します。次に、各アイテムをlengths配列の長さまで反復(fù)します。各アイテムについて、その長さを計算し、それをitem配列に押し込みます。 for loopsfor注:中間割り當(dāng)てなしでanimalsの長さをlengths配列に直接プッシュすることで、これをより簡潔に行うことができると言えます。これにより、コードが節(jié)約されますが、この非常に単純な例であっても、コードの読み取りが低下します。繰り返しますが、より効率的ではあるが簡単ではないようにするために、既知の

配列の長さを使用して

配列をに初期化し、animals[count]を使用する代わりにインデックスでアイテムを挿入できます。それはすべて、現(xiàn)実の世界でコードをどのように使用するかに依存します。 lengthsanimals lengthsこの方法には技術(shù)的な問題はありません。標準のJavaScriptエンジンで動作するはずで、仕事をします。しかし、new Array(animals.length)の使用方法を知ったら、そうすることは不器用に見えるでしょう。 push これに対処するために

を使用する方法をお見せしましょう:

map()

この場合、

配列変數(shù)から再び開始します。ただし、宣言する他の変數(shù)のみはmap()です。これは、

配列の各要素に匿名のインライン関數(shù)をマッピングした結(jié)果に直接割り當(dāng)てます。この匿名関數(shù)は、各動物で操作を?qū)g行し、長さを返します。その結(jié)果、
var animals = ["cat","dog","fish"];
var lengths = animals.map(function(animal) {
  return animal.length;
});
console.log(lengths); //[3, 3, 4]
は、各単語の長さを含むオリジナル

配列と同じ長さのアレイになります。 animals

この方法について注意するいくつかのポイント。まず、元の方法よりもはるかに短いです。第二に、はるかに少ない変數(shù)を宣言する必要があります。変數(shù)が少ないほど、グローバルネームスペースにはノイズが少なくなり、同じコードの他の部分が同じ名前の変數(shù)を使用すると、競合の可能性が低くなります。さらに、変數(shù)はその価値を最初から最後まで変更する必要はありません。機能的なプログラミングに飛び込むと、定數(shù)と不変の変數(shù)を使用する優(yōu)雅な能力を高く評価します。今すぐ學(xué)習(xí)を開始するのに遅すぎることはありません。

このアプローチのもう1つの利點は、指定された関數(shù)を分離してそのプロセスでクリーナーコードを生成することにより、その汎用性を改善する機會があることです。匿名のインライン関數(shù)は、亂雑に見え、コードの再利用をより困難にすることができます。この方法でコンテキストでそれを使用することができます。

getLength()これがどれほどきれいに見えるかを見てください。 Toolkitの一部としてマッピングを取得するだけで、コードをまったく新しい機能レベルに引き上げることができます。

var animals = ["cat","dog","fish"];
var lengths = [];
var item;
var count;
var loops = animals.length;
for (count = 0; count < loops; count++) {
  item = animals[count];
  lengths.push(item.length);
}
console.log(lengths); //[3, 3, 4]
ファンクターとは何ですか?

興味深いことに、マッピング機能を配列オブジェクトに追加することにより、ECMAScript 5を基本的な配列タイプを完全なファンチャーに変え、機能的なプログラミングを使用しやすくします。

古典的な機能プログラミングの定義によると、ファンサーは3つの條件を満たしています。

値のセット

が含まれています

各要素に作用するマッピング関數(shù)を?qū)g裝します
  1. そのマッピング関數(shù)は、同じサイズのファンサーを返します
  2. これは、次のJavaScriptミーティングで議論できるトピックです。
  3. 機能者の詳細については、Mattias Petter Johanssonのこの素晴らしいビデオをご覧ください。

rediming

を使用します

メソッドは、ecMascript 5の新しい方法でもあります。これは、に類似していますが、別のファンチャーを生成せず、単一の結(jié)果を生成します。たとえば、

配列內(nèi)のすべての単語の長さの合計を數(shù)字として取得するとします。から始めることができます:

reduce() map()最初の配列を定義した後、実行合計の変數(shù)animalsを作成し、最初はゼロに設(shè)定します。また、

ループを通過するときに
var animals = ["cat","dog","fish"];
var lengths = animals.map(function(animal) {
  return animal.length;
});
console.log(lengths); //[3, 3, 4]
配列の各反復(fù)を保存する変數(shù)

、およびループカウンターの変數(shù)total、およびa item変數(shù)を最適化するanimals変數(shù)も作成しました。次に、Aforループを?qū)g行して、count配列內(nèi)のすべての単語を反復(fù)し、各単語をloops変數(shù)に割り當(dāng)てます。最後に、各アイテムの長さを合計に追加します。 for animals繰り返しますが、このアプローチには技術(shù)的な問題はありません。配列から始めて、最終的に結(jié)果を得ます。ただし、itemメソッドを使用すると、このプロセスをより直接的にすることができます。

var animals = ["cat","dog","fish"];
var lengths = [];
var item;
var count;
var loops = animals.length;
for (count = 0; count < loops; count++) {
  item = animals[count];
  lengths.push(item.length);
}
console.log(lengths); //[3, 3, 4]
ここで起こるのは、新しい変數(shù)を定義し、匿名インライン関數(shù)と初期実行合計値ゼロの2つのパラメーターを使用して

配列を削減した結(jié)果に割り當(dāng)てていることです。削減は、配列內(nèi)の各アイテムを通過し、そのアイテムの関數(shù)を?qū)g行し、次の反復(fù)に合計された実行に追加します。ここで、インライン関數(shù)には2つのパラメーターがあります。ランサムと現(xiàn)在配列から処理されている?yún)g語です。この関數(shù)は、現(xiàn)在の値の現(xiàn)在の値を現(xiàn)在の単語の長さに追加します。 total animals totalの2番目のパラメーターをゼロに設(shè)定することに注意してください。 2番目のパラメーターがなければ、

メソッドは引き続き機能しますが、結(jié)果は必ずしも予想される結(jié)果ではありません。 (それを試して、合計を?qū)g行するときにJavaScriptによって使用されるロジックを確認してください。)

reduce()匿名のインライン関數(shù)の定義はtotalメソッドを呼び出すときに統(tǒng)合されるため、これは必要以上に複雑に見えるかもしれません。もう一度やりましょうが、匿名のインライン関數(shù)を使用する代わりに、まず名前付き関數(shù)を定義しましょう。 reduce

これはもう少し長いですが、成長するのは必ずしも悪いことではありません。この方法で表示すると、

メソッドで何が起こるかが少し明確になります。 reduce()

var animals = ["cat","dog","fish"];
var lengths = animals.map(function(animal) {
  return animal.length;
});
console.log(lengths); //[3, 3, 4]
メソッドには、アレイ內(nèi)の各要素に適用される関數(shù)と、合計の実行に使用される初期値の2つのパラメーターがあります。この場合、

という名前の新しい関數(shù)の名前と実行合計ゼロの初期値を渡します。 reduce関數(shù)を作成して、2つのパラメーターも受け入れます:実行されるrun sumと文字列。

reduce()結(jié)論addLengthaddLength()

定期的に使用する習(xí)慣を開発することで、コードをより簡潔で、より一般的で、維持しやすくし、より機能的なJavaScriptテクノロジーを使用する方法を開くための代替手段が提供されます。

および

メソッドは、ECMAScript 5に追加された新しいメソッドの2つにすぎません。おそらく、今日見られるコードの品質(zhì)と開発者の満足度の改善は、パフォーマンスへの一時的な影響をはるかに上回るでしょう。機能的な手法を使用して、

map()がアプリケーションに適しているかどうかを決定する前に、現(xiàn)実世界の影響を開発および測定します。 reduce()

この記事は、Panayiotis Velisarakos、Tim Severien、Dan Princeによってレビューされました。 SitePointコンテンツを最高の狀態(tài)にしてくれたすべてのSitePointピアレビューアに感謝します! map()reduce() map()reduce()functional javascript(faq)

におけるMap-Reduceに関するよくある質(zhì)問

JavaScriptのMAPとReduceの違いは何ですか?

javascriptでは、マップと還元は両方ともアレイに作用する高次関數(shù)です。マップ関數(shù)は、元の配列の各要素に関數(shù)を適用することにより、新しい配列を作成するために使用されます。元の配列は変更されませんが、新しい配列を返します。一方、還元関數(shù)は、配列を単一の値に単純化するために使用されます。アレイの各要素に関數(shù)を適用して、単一の出力値に縮小できるようにします。

マップ機能はJavaScriptでどのように機能しますか?

JavaScriptのマップ関數(shù)は、既存の配列から新しい配列を作成することで機能します。これは、指定された関數(shù)を元の配列內(nèi)の各要素に適用することにより行います。この関數(shù)は、配列內(nèi)の各要素に対して1回呼び出されます。結(jié)果は、関數(shù)呼び出しの結(jié)果を含む新しい配列です。

JavaScriptで機能を削減するにはどうすれば機能しますか?

JavaScriptの削減機能は、配列の各要素に関數(shù)を適用して、配列を単一の出力値に削減できるように機能します。出力値は、関數(shù)呼び出しの累積結(jié)果です。この関數(shù)は、アキュムレータと現(xiàn)在の値の2つのパラメーターを受け入れます。アキュムレータの蓄積関數(shù)呼び出しの返品値。

JavaScriptでマップを使用して削減できますか?

はい、JavaScriptでマップを使用して削減できます。実際、それらは機能的なプログラミングでよく使用されます。マップ関數(shù)を使用して各要素を配列內(nèi)のコンバージョンを変換し、redoce関數(shù)を使用して、変換された要素を単一の出力値に結(jié)合することができます。

JavaScriptのMAPとForeachの違いは何ですか?

マップとforeachはどちらもJavaScriptの配列に作用する高次関數(shù)です。それらの主な違いは、MAPが元の配列の各要素に関數(shù)を適用して新しい配列を作成し、Arlayの各要素に適用して副作用を取得することです。 foreachは新しい配列を返しません。

マップ関數(shù)を使用してJavaScriptの配列を変換するにはどうすればよいですか?

JavaScriptのマップ関數(shù)を使用して、配列の各要素に関數(shù)を適用して配列を変換できます。この関數(shù)は、配列內(nèi)の各要素に対して1回呼び出されます。結(jié)果は、関數(shù)呼び出しの結(jié)果を含む新しい配列です。

resid機能を使用して、javascriptの配列の要素を組み合わせた方法は?

JavaScriptのReduce関數(shù)を使用して、配列の要素を単一の出力値に組み合わせることができます。関數(shù)は配列內(nèi)の各要素に適用され、出力値は関數(shù)呼び出しの累積結(jié)果です。

JavaScriptのマップ関數(shù)の一般的なユースケースは何ですか?

JavaScriptのマップ関數(shù)は、アレイの各要素に関數(shù)を適用することにより、アレイを変換するために多くの場合使用されます。いくつかの一般的なユースケースには、文字列を數(shù)値に変換し、文字列のケースを変更し、オブジェクトからプロパティを抽出することが含まれます。

JavaScriptの機能を低下させる一般的なユースケースは何ですか?

JavaScriptの削減機能は通常、配列の要素を単一の出力値に結(jié)合するために使用されます。いくつかの一般的なユースケースには、數(shù)値の合計、最大値または最小値の検索、および連結(jié)文字列が含まれます。

JavaScriptのマップをデバッグまたは削減する方法は?

関數(shù)のconsole.logステートメントを使用して変數(shù)と式の値を表示することにより、JavaScriptのマップをデバッグまたはJavaScriptの機能を低減できます。また、debugger

以上がMAPを使用して、機能的なJavaScriptで削減しますの詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

node.jsでHTTPリクエストを作成する方法は? node.jsでHTTPリクエストを作成する方法は? Jul 13, 2025 am 02:18 AM

node.jsでHTTPリクエストを開始するには、組み込みモジュール、axios、およびnode-fetchを使用する3つの一般的な方法があります。 1.依存関係のない內(nèi)蔵http/httpsモジュールを使用します。これは基本的なシナリオに適していますが、https.get()を使用してデータを取得したり、.write()を介してPOSTリクエストを送信するなど、データステッチとエラーモニタリングの手動処理が必要です。 2.Axiosは、約束に基づいたサードパーティライブラリです。簡潔な構(gòu)文と強力な機能を備えており、非同期/待ち聲、自動JSON変換、インターセプターなどをサポートします。非同期リクエスト操作を簡素化することをお勧めします。 3.Node-Fetchは、約束と単純な構(gòu)文に基づいて、ブラウザフェッチに似たスタイルを提供します

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當(dāng)てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

JavaScript Timeオブジェクト、誰かがEACTEXE、Google Chromeなどのより高速なWebサイトを構(gòu)築します。 JavaScript Timeオブジェクト、誰かがEACTEXE、Google Chromeなどのより高速なWebサイトを構(gòu)築します。 Jul 08, 2025 pm 02:27 PM

こんにちは、JavaScript開発者!今週のJavaScriptニュースへようこそ!今週は、DenoとのOracleの商標紛爭、新しいJavaScript Timeオブジェクトがブラウザ、Google Chromeアップデート、およびいくつかの強力な開発ツールによってサポートされています。始めましょう! 「JavaScript」の商標を登録しようとするDeno Oracleの試みとのOracleの商標紛爭は、論爭を引き起こしました。 Node.jsとDenoの作成者であるRyan Dahlは、商標をキャンセルするために請願書を提出しました。

キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? Jul 08, 2025 am 02:43 AM

Cacheapiは、ブラウザからネットワークリクエストをキャッシュするツールです。これは、ウェブサイトのパフォーマンスとオフラインエクスペリエンスを改善するために、サービスワーカーと併用することがよくあります。 1.開発者は、スクリプト、スタイルシート、寫真などのリソースを手動で保存できるようにします。 2。要求に応じてキャッシュ応答と一致させることができます。 3.特定のキャッシュの削除またはキャッシュ全體のクリアをサポートします。 4.フェッチイベントを聞いているサービスワーカーを介して、キャッシュの優(yōu)先順位またはネットワークの優(yōu)先戦略を?qū)g裝できます。 5.オフラインサポート、繰り返しのアクセス速度の高速化、主要なリソースのプリロード、バックグラウンドアップデートコンテンツによく使用されます。 6.それを使用する場合、キャッシュバージョンの制御、ストレージ制限、およびHTTPキャッシングメカニズムとの違いに注意する必要があります。

ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ Jul 08, 2025 am 02:40 AM

約束は、JavaScriptで非同期操作を処理するためのコアメカニズムです。チェーンコール、エラー処理、コンビナーの理解は、アプリケーションをマスターするための鍵です。 1.チェーンコールは、.then()を通じて新しい約束を返し、非同期プロセスの連結(jié)を?qū)g現(xiàn)します。それぞれ.then()は以前の結(jié)果を受け取り、値または約束を返すことができます。 2。エラー処理は、.catch()を使用して例外をキャッチしてサイレント障害を回避し、キャッチのデフォルト値を返すためにプロセスを継続する必要があります。 3。promise.all()などの組み合わせ(すべての成功後にのみ成功しました)、promise.race()(最初の完了が返されます)、promise.allsettled()(すべての完了を待っています)

JavaScriptでのデータ操作のためのArray.Prototypeメソッドを活用します JavaScriptでのデータ操作のためのArray.Prototypeメソッドを活用します Jul 06, 2025 am 02:36 AM

.map()、.filter()、.reduce()などのJavaScriptアレイ內(nèi)蔵メソッドは、データ処理を簡素化できます。 1).map()は、要素を1つに変換して新しい配列を生成するために使用されます。 2).filter()は、條件ごとに要素をフィルタリングするために使用されます。 3).reduce()は、データを単一の値として集約するために使用されます。使用すると誤用を避ける必要があり、その結(jié)果、副作用やパフォーマンスの問題が発生します。

JSラウンドアップ:JavaScriptイベントループに深く潛り込む JSラウンドアップ:JavaScriptイベントループに深く潛り込む Jul 08, 2025 am 02:24 AM

JavaScriptのイベントループは、コールスタック、WebAPIS、およびタスクキューを調(diào)整することにより、非同期操作を管理します。 1.コールスタックは同期コードを?qū)g行し、非同期タスクに遭遇すると、処理のためにWebAPIに引き渡されます。 2。WebAPIがバックグラウンドでタスクを完了した後、コールバックを?qū)潖辘工毳濠`(マクロタスクまたはマイクロタスク)に入れます。 3.イベントループは、コールスタックが空であるかどうかをチェックします??栅螆龊?、コールバックはキューから取り出され、実行のためにコールスタックに押し込まれます。 4.マイクロタスク(Promise.thenなど)は、マクロタスク(SettimeOutなど)より優(yōu)先されます。 5.イベントループを理解するには、メインスレッドのブロックを避け、コード実行順序を最適化するのに役立ちます。

JavaScript DOMイベントでのイベントの泡立ちとキャプチャの理解 JavaScript DOMイベントでのイベントの泡立ちとキャプチャの理解 Jul 08, 2025 am 02:36 AM

イベントの泡は、ターゲット要素から祖先ノードに外側(cè)に伝播し、イベントキャプチャは外側(cè)の層からターゲット要素に內(nèi)側(cè)に伝播します。 1。イベントバブル:子要素をクリックした後、イベントは親要素のリスナーを上向きにトリガーします。たとえば、ボタンをクリックした後、最初に保育を出してから、親クリックしました。 2。イベントキャプチャ:3番目のパラメーターをtrueに設(shè)定して、リスナーが[親子要素のキャプチャリスナー]をクリックする前に[親要素のキャプチャリスナーをトリガーするなど、キャプチャステージで実行されるようにします。 3.実用的な用途には、子どもの要素イベントの統(tǒng)一された管理、傍受前処理、パフォーマンスの最適化が含まれます。 4. DOMイベントストリームは、キャプチャ、ターゲット、バブルの3つの段階に分割され、デフォルトのリスナーはバブルステージで実行されます。

See all articles