JSクロージャの特徴分析
bodyタグ内にidノードを持つuタグを追加し、ulタグの下にliタグが5つあります。別の li タグをクリックしたときに li 添字をポップアップするにはどうすればよいですか?
1) まず、ul ノードを取得する必要があります var node = document.getElementsById('node')
2) ノードの下の子ノードを取得します node var list = node.children
**3) onclick イベントを子に追加しますループ内のノード (クロージャの問題が発生することに注意してください)。 for(var i=0;i
4) 出力 7 を分析します。i は var を使用してグローバル変数として宣言されているため、同じアドレスを指します。ループの実行後、i の値は 7 なので、各ループで出力される結果は 7 になります
これを解決するには 2 つの方法を使用します。1) ブロックレベルのスコープ変数を宣言し、渡すたびに let j = i を使用します。私は受け取ります 。
let j = i; list[i].onclick = function(){console.log(j)}
function メソッドでは、ブロックレベル変数 j が呼び出されます。この変数はガベージ コレクションされません。各 for ループは異なるアドレスを指すため、クリック イベントがトリガーされると、その添え字が正しく出力されます。 2) クロージャを使用して問題を解決します。
list[i].onclick = function(i){ return function(){console.log(i)}。 }
**クロージャの解釈
クロージャは、他の関数の内部変数を読み取ることができる関数です。 JavaScript 言語では、関数内のサブ関数のみがローカル変数を読み取ることができます。クロージャは、単純に「関数内で定義された関数」として理解できます。基本的に、クロージャは関数の内部と関数の外部を接続するブリッジです。
注: クロージャを使用すると、関数内の変数がメモリに保存され、大量のメモリを消費します。そのため、Web ページでパフォーマンスの問題が発生したり、IE ブラウザでメモリ リークが発生したりする可能性があるクロージャを悪用することはできません。 。 。最後の解決策は、関数を終了する前に未使用のローカル変数をすべて削除することです。
他の人の例を使用します。ご参考までに
var name = "this window"; var object = { name :"my object", getNameFunc:function () { return function () { return this.name; } } } alert(object.getNameFunc()());/弹出this window2 。此时this对象指向window对象 var object2 = { name: "my object", getNameFunc2: function () { var that = th is; return function () { return that.name; } } } alert(‘that’+object2.getNameFunc2()()); ///弹出my object。此时this对象指向object2对象
関連する推奨事項:
以上がJSクロージャの特徴分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











タイトル: DreamWeaver CMS のセカンダリディレクトリを開けない原因と解決策の分析 Dreamweaver CMS (DedeCMS) は、さまざまな Web サイトの構築に広く使用されている強力なオープンソースのコンテンツ管理システムです。ただし、Web サイトの構築中に、セカンダリ ディレクトリを開けない状況が発生し、Web サイトの通常の動作に問題が発生することがあります。この記事では、セカンダリ ディレクトリを開けない考えられる理由を分析し、この問題を解決するための具体的なコード例を示します。 1. 考えられる原因分析: 疑似静的ルール構成の問題: 使用中

Golang (Go 言語) には伝統的な意味でのクラスの概念はありませんが、構造体と呼ばれるデータ型が提供され、これによってクラスと同様のオブジェクト指向機能を実現できます。この記事では、構造体を使用してオブジェクト指向機能を実装する方法を説明し、具体的なコード例を示します。構造体の定義と使用法 まず、構造体の定義と使用法を見てみましょう。 Golang では、type キーワードを通じて構造を定義し、必要に応じて使用できます。構造には属性を含めることができます

インターネットの急速な発展に伴い、プログラミング言語は常に進化し、更新されています。中でもGo言語はオープンソースのプログラミング言語として近年注目を集めています。 Go 言語は、シンプル、効率的、安全で、開発とデプロイが簡単になるように設計されています。高い同時実行性、高速なコンパイル、メモリの安全性などの特徴を備えており、Web開発、クラウドコンピューティング、ビッグデータなどの分野で広く使用されています。ただし、現在、Go 言語のさまざまなバージョンが利用可能です。適切な Go 言語バージョンを選択するときは、要件と機能の両方を考慮する必要があります。頭

タイトル: テンセントの主要なプログラミング言語は Go ですか: 詳細な分析 中国の大手テクノロジー企業として、テンセントはプログラミング言語の選択において常に多くの注目を集めてきました。近年、テンセントは主に Go を主要なプログラミング言語として採用していると考える人もいます。この記事では、Tencent の主要なプログラミング言語が Go であるかどうかについて詳細な分析を行い、この見解を裏付ける具体的なコード例を示します。 1. Tencent における Go 言語の適用 Go は、Google によって開発されたオープンソースのプログラミング言語であり、その効率性、同時実行性、シンプルさにより多くの開発者に愛されています。

静的測位技術の利点と限界の分析 現代の科学技術の発展に伴い、測位技術は私たちの生活に欠かせないものになりました。その 1 つとして、静的測位テクノロジには独自の利点と制限があります。この記事では、静的測位技術の詳細な分析を実施して、現在の応用状況と将来の開発傾向をより深く理解します。まず、静的測位技術の利点を見てみましょう。静的測位技術は、位置決め対象の物体を観察、測定、計算することで位置情報を決定します。他の測位技術と比較して、

Tomcat クラッシュの原因分析と解決策 はじめに: インターネットの急速な発展に伴い、サービスを提供するためにサーバー上に展開されるアプリケーションがますます増えています。 Tomcat は、一般的な JavaWeb サーバーとして、アプリケーション開発で広く使用されています。ただし、Tomcat のクラッシュに関する問題が発生し、アプリケーションが適切に実行されなくなる場合があります。この記事では、Tomcat クラッシュの原因の分析を紹介し、解決策を提供し、具体的なコード例を示します。

C++ 関数には、単純関数、const 関数、静的関数、および仮想関数というタイプがあり、インライン関数、デフォルト パラメーター、参照戻り値、およびオーバーロードされた関数などの機能が含まれます。たとえば、calculateArea 関数は π を使用して、指定された半径の円の面積を計算し、それを出力として返します。

Golang は高速で効率的なプログラミング言語として、Web 開発の分野でも広く使用されています。その中でも、ミドルウェアは重要な設計パターンであり、開発者がコードをより適切に整理および管理し、コードの再利用性と保守性を向上させるのに役立ちます。この記事では、Golang のミドルウェアの主な機能とアプリケーション シナリオを紹介し、具体的なコード例を通じてその使用法を説明します。 1. ミドルウェアの概念と機能 ミドルウェアはプラグイン コンポーネントとして、アプリケーションの要求と応答の処理チェーンに配置され、使用されます。
