検索
ホームページウェブフロントエンドjsチュートリアルJavascript_javascript スキルの匿名関数の概要

1. 匿名関数とは何ですか?

JavaScript で関数を定義するには、通常 3 つの方法があります:

  1. 関数キーワード (関数) ステートメント:
    <code>function fnMethodName(x){alert(x);}</code>
  2. 関数リテラル:
    <code>var fnMethodName = function(x){alert(x);}</code>
  3. Function() コンストラクター:
    <code>var fnMethodName = new Function('x','alert(x);')</code>

上記の 3 つのメソッドは同じメソッド関数 fnMethodName を定義します。最初のメソッドは最もよく使用されるメソッドで、関数を変数 fnMethodName にコピーします。この関数には名前がありません。つまり、匿名関数です。実際、 のかなりの数の言語に匿名関数 があります。

2. 関数リテラルと Function() コンストラクターの違い

  1. 関数リテラルは匿名関数ですが、構文では再帰関数を作成するときにそれ自体を呼び出すことができますが、Function() コンストラクターを使用することはできません。
    <code>var f = function fact(x) {
     if (x </code>
  2. Function() コンストラクターを使用すると、実行時に JavaScript コードを動的に作成およびコンパイルできます。この点では、グローバル関数 eval() に似ています。
  3. Function() コンストラクターは関数本体を解析し、実行されるたびに新しい関数オブジェクトを作成します。したがって、ループ内で Function() コンストラクターを呼び出したり、頻繁に実行される関数を呼び出したりする効率は非常に低くなります。対照的に、関数リテラルは、検出されるたびに再コンパイルされません。
  4. Function() コンストラクターを使用して関数を作成する場合、それは常にトップレベル関数として実行されます。
    <code>var y = "global";
    function constructFunction() {
      var y = "local";
      return new Function("return y"); <span>// 无法获取局部变量</span>
    }
    alert(constructFunction()()); <span>// 输出 "global"</span>
    </code>

Function キーワード定義と比較すると、Function() コンストラクターには独自の特性があり、使用するのがはるかに難しいため、このテクノロジは通常はほとんど使用されません。関数のリテラル式は、関数のキーワード定義に非常に似ています。前述の違いを考慮すると、OS X 10.4.3 の一部の Webkit エンジンではリテラルの匿名関数にバグがあるというニュースがありますが、通常参照する匿名関数は、関数リテラルの形式での匿名関数を指します。詳細については、『JavaScript: The Definitive Guide, 5th Edition』の関数の章を参照してください。

3. 無名関数のコードパターン

昨日hedger wangは、 いくつかの匿名関数コード パターンを彼のブログで紹介しました:

エラー モード: 機能せず、ブラウザーは構文エラーを報告します。

<code>function(){
 alert(1);
}();</code>
  1. 関数リテラル: まず関数オブジェクトを宣言してから実行します。
    <code>(function(){
     alert(1);
    } ) ( );</code>
  2. 優先式: Javascript は括弧の内側から外側に向かって式を実行するため、括弧を使用して宣言された関数を強制的に実行できます。
    <code>( function(){
     alert(2);
    } ( ) );</code>
  3. Void 演算子 : かっこで囲まれていない単一のオペランドを実行するには、void 演算子を使用します。
    <code>void function(){
     alert(3);
    }()</code>

これら 3 つの方法は同等です。Hedge Wang は個人的な理由から 3 番目の方法を好みますが、実際のアプリケーションでは、私が見て使用したのは最初の方法です。

4. 匿名関数の適用

  1. 「JavaScript のモジュール パターン」 の最初の文は「グローバル変数は悪魔です」です。匿名関数を var キーワードと組み合わせると、グローバル変数を汚染することなく Javascript がページに書き込まれることを効果的に保証できます。これは、見慣れないページに Javascript を追加する場合に非常に効果的かつエレガントです。実際、匿名関数は YUI とそれに対応する例で広く使用されており、他の Javascript ライブラリでも広く使用されています。
  2. JavaScript は関数型プログラミングの基礎です。詳細については、「関数型プログラミング手法による美しい JavaScript の記述」 および 「関数型 JavaScript プログラミング ガイド」を参照してください。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
C/CからJavaScriptへ:すべてがどのように機能するかC/CからJavaScriptへ:すべてがどのように機能するかApr 14, 2025 am 12:05 AM

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

JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

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

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

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

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

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

JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

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

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

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

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

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

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ヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境