Javascript_javascript スキルの匿名関数の概要
1. 匿名関数とは何ですか?
JavaScript で関数を定義するには、通常 3 つの方法があります:
-
関数キーワード (関数) ステートメント:
<code>function fnMethodName(x){alert(x);}</code>
ログイン後にコピー -
関数リテラル:
<code>var fnMethodName = function(x){alert(x);}</code>
ログイン後にコピー -
Function() コンストラクター:
<code>var fnMethodName = new Function('x','alert(x);')</code>
ログイン後にコピー
上記の 3 つのメソッドは同じメソッド関数 fnMethodName を定義します。最初のメソッドは最もよく使用されるメソッドで、関数を変数 fnMethodName にコピーします。この関数には名前がありません。つまり、匿名関数です。実際、 のかなりの数の言語に匿名関数 があります。
2. 関数リテラルと Function() コンストラクターの違い
- 関数リテラルは匿名関数ですが、構文では再帰関数を作成するときにそれ自体を呼び出すことができますが、Function() コンストラクターを使用することはできません。
<code>var f = function fact(x) { if (x < = 1) return 1; else return x*fact(x-1); };</code>
ログイン後にコピー - Function() コンストラクターを使用すると、実行時に JavaScript コードを動的に作成およびコンパイルできます。この点では、グローバル関数 eval() に似ています。
- Function() コンストラクターは関数本体を解析し、実行されるたびに新しい関数オブジェクトを作成します。したがって、ループ内で Function() コンストラクターを呼び出したり、頻繁に実行される関数を呼び出したりする効率は非常に低くなります。対照的に、関数リテラルは、検出されるたびに再コンパイルされません。
- 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>
-
関数リテラル: まず関数オブジェクトを宣言してから実行します。
<code>(function(){ alert(1); } ) ( );</code>
ログイン後にコピー -
優先式: Javascript は括弧の内側から外側に向かって式を実行するため、括弧を使用して宣言された関数を強制的に実行できます。
<code>( function(){ alert(2); } ( ) );</code>
ログイン後にコピー -
Void 演算子 : かっこで囲まれていない単一のオペランドを実行するには、void 演算子を使用します。
<code>void function(){ alert(3); }()</code>
ログイン後にコピー
これら 3 つの方法は同等です。Hedge Wang は個人的な理由から 3 番目の方法を好みますが、実際のアプリケーションでは、私が見て使用したのは最初の方法です。
4. 匿名関数の適用
- 「JavaScript のモジュール パターン」 の最初の文は「グローバル変数は悪魔です」です。匿名関数を var キーワードと組み合わせると、グローバル変数を汚染することなく Javascript がページに書き込まれることを効果的に保証できます。これは、見慣れないページに Javascript を追加する場合に非常に効果的かつエレガントです。実際、匿名関数は YUI とそれに対応する例で広く使用されており、他の Javascript ライブラリでも広く使用されています。
- JavaScript は関数型プログラミングの基礎です。詳細については、「関数型プログラミング手法による美しい JavaScript の記述」 および 「関数型 JavaScript プログラミング ガイド」を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











ラムダ式とも呼ばれる匿名関数は、名前を指定せず、1 回限りの使用または関数ポインターを渡すために使用される関数です。機能には、匿名性、ワンタイム使用、クロージャ、戻り値の型推論が含まれます。実際には、ソートやその他の 1 回限りの関数呼び出しによく使用されます。

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

pythonLambda 式は、簡潔で読みやすく、使いやすいコードを作成するための強力で柔軟なツールです。これらは、他の関数に引数として渡したり、変数に保存したりできる匿名関数をすばやく作成するのに最適です。 Lambda 式の基本構文は次のとおりです。 lambdaarguments:expression たとえば、次の Lambda 式は 2 つの数値を加算します: lambdax,y:x+y この Lambda 式は、次のように引数として別の関数に渡すことができます。 defsum( x ,y):returnx+yresult=sum(lambdax,y:x+y,1,2) この例では

はい、Go 言語の匿名関数は複数の値を返すことができます。構文: func(arg1,arg2,...,argN)(ret1,ret2,...,retM){//関数本体}。使用法: 戻り値を受け取るには := 演算子を使用し、複数の値を返すには return キーワードを使用します。

Python のラムダ式は、式を変数に格納し、その値を返す小さな匿名関数です。ラムダ式は、別の関数を作成することで実行できる単純なタスクを実行するためによく使用されますが、ラムダ式を使用すると、コードがより簡潔で読みやすくなります。 Lambda 式の構文は次のとおりです。 lambdaarguments:expressionarguments は Lambda 式によって受け取られるパラメータ リストで、expression は実行する必要があるコードを含む Lambda 式の本体です。たとえば、次のラムダ式は 2 つの数値を加算し、その合計を返します: lambdax,

Python のラムダ式は、匿名関数の別の構文形式です。これは、プログラム内のどこにでも定義できる小さな匿名関数です。ラムダ式はパラメータ リストと式で構成されます。式には有効な Python 式を使用できます。ラムダ式の構文は次のとおりです: lambdaargument_list:expression. たとえば、次のラムダ式は 2 つの数値の合計を返します: lambdax,y:x+y. このラムダ式は、マップなどの他の関数に渡すことができます。 () 関数:数値=[ 1,2,3,4,5]結果=マップ(ラムダ

Go の関数内の匿名関数を使用すると、関数本体内で明示的に宣言せずに 1 回限りの関数を作成できます。これらは、 func キーワードを使用し、関数名を省略して定義されます。クロージャを通じて実装されます。クロージャには、関数本体コードと、匿名関数を含む関数内のすべてのローカル変数への参照が含まれます。たとえば、匿名関数を sort.Slice 関数で使用して、整数のスライスを並べ替えることができます。
