クロージャとは一体何ですか?(簡単な JS 定義)
最初の就職面接で面接官にクロージャーの定義を尋ねられたときのことを覚えています。専門用語がわからなかったので大変でした。しかし、心の奥底では、たとえ説明できなくても、それが何を意味するのかは理解できたという気持ちがありました。
面接が終わった後 (ネタバレ: 私は選ばれませんでした)、私は閉店について調べるために急いで Google にアクセスしました。私が最初に出会った用語は、Lexical Scoping = _What?
でした。心配しないでください。語彙スコープは単純なものを表す単なる派手な用語です。
それでは、段階的に理解していきましょう。
字句スコープの説明
あなたの家のことを考えてください。あなたが寝室にいて、寝室のランプをつけたいと想像してください。現在いる部屋にあるランプのみをオンにすることができます。これは語彙スコープです。現在のコンテキスト内にあるもの (ランプなど) にのみアクセスして変更できます。
const bedroom = () => { let bedroomLamp = 'off' const turnOnBedroomLamp = () => { bedroomLamp = 'on' } const turnOffBedroomLamp = () => { bedroomLamp = 'off' } }
関数turnOnBedroomLampとturnOffBedroomLampはベッドルームコンテキスト内に存在するため、これらはbedroomLamp変数にアクセスして変更できます。
今、あなたがキッチンにいると想像して、寝室のランプを消してみてください。これは、別のコンテキストにいるため機能しません。また、キッチンは、bedroomLamp 変数にアクセスできません:
const kitchen = () => { const turnOnBedroomLamp = () => { bedroomLamp = 'on' // You can't do this!! } }
とてもシンプルですよね?
字句スコープとクロージャの関係は何ですか?
では、さらに話を進めましょう。あなたの家に、どの部屋にいても寝室のランプをオンにできるリモコンがあると想像してください。このリモコンは、キッチンにいる場合でも、制御する寝室のランプを「記憶」します。
この「記憶」こそがクロージャなのです!
コードの例は次のとおりです:
const bedroom = () => { let bedroomLamp = 'off' const turnOnBedroomLamp = () => { bedroomLamp = 'on' } return turnOnBedroomLamp // Returning the function } const remoteControl = bedroom() // Creating the closure remoteControl() // Using the closure to turn on the bedroom lamp
この例では:
ベッドルーム関数は、ローカル変数 BedroomLamp と関数 TurnOnBedroomLamp を作成します。
turnOnBedroomLamp は、それが作成されたコンテキスト (寝室機能) を記憶します。
remoteControl (返された関数) を呼び出すと、ベッドルーム関数の外にいるにもかかわらず、ベッドルームランプ変数にアクセスできます。
わかりますか?これは非常にシンプルなアイデアで、JavaScript が物事を記憶しているだけなので、さまざまな場所でさまざまな方法で使用できます。
ここで実際のコードのコンテキストで考えて、日常でクロージャをどのように使用できるかを見てみましょう。以下のコードは、製品値に割引を追加する関数を作成します。
const createDiscount = (discount) => { return (price) => price - price * discount } const tenPercentOff = createDiscount(0.1) // 10% off const twentyPercentOff = createDiscount(0.2) // 20% off // Using discount functions console.log(tenPercentOff(100)) // returns 90 console.log(twentyPercentOff(200)) // returns 160
これで、クロージャについて認識し、面接でその定義を尋ねられたときに備えられました。詳細については、参考セクションを確認してください。
参考文献
閉鎖 - MDN ウェブ ドック
JavaScript でのクロージャ - GeeksForGeeks
以上がクロージャとは一体何ですか?(簡単な 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)

ホットトピック











JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます
