ホームページ ウェブフロントエンド jsチュートリアル JSの特殊関数(Function()コンストラクタ、関数リテラル)の違いのご紹介_基礎知識

JSの特殊関数(Function()コンストラクタ、関数リテラル)の違いのご紹介_基礎知識

May 16, 2016 pm 05:33 PM
function コンストラクタ

関数定義
関数は、キーワード関数、関数名、パラメーターのセット、かっこ内に実行されるコードという形式で宣言されます。
関数の構築構文は 3 種類あります。
Js コード
コピー コード コードは次のとおりです。

1.function functionName(arg0, arg1, ... argN) { ステートメント }//function ステートメント
2.var function_name = new Function(arg1, arg2, ..., argN) , function_body); //Function() コンストラクター
3.var func = function(arg0, arg1, ... argN) { ステートメント };//関数の直接量

例:
Js コード
コードをコピー コードは次のとおりです。

1.function f( x){return x* x};//function ステートメント
2.var f = new Function("x","re​​turn x*x;");//Function() コンストラクター
3.var f = function(x) {return x*x;};//関数リテラル

関数に明確な戻り値がない場合、またはパラメーターなしで return ステートメントを呼び出した場合、実際に返される値は次のとおりです。未定義。

Function() コンストラクター
Function は実際には完全に機能するオブジェクトです。 Function クラスは、開発者が定義した任意の関数を表すことができます。 Function クラスを使用して関数を直接作成する構文は次のとおりです。
var function_name = new function(arg1, arg2, ..., argN, function_body)
上記の形式では、各 arg はパラメーターです。最後の引数は関数の本体 (実行されるコード) です。これらのパラメータは文字列である必要があります。
var SayHi = new Function("sName", "sMessage", "alert('Hello ' sName sMessage);");
sayHi("jzj,", "Hello!");//こんにちは jzj 、 こんにちは!
関数名はその関数を指す単なる変数なので、その関数をパラメータとして別の関数に渡すことができますか?答えははいです。参照してください:
Js コード
コードをコピー コードは次のとおりです:

function callAnotherFunc(fnFunction, vArgument) {
fnFunction(vArgument);
}
var doAdd = new Function("iNum", "alert(iNum 10)"); (doAdd, 10); //Output "20"

注: Function コンストラクターを使用して関数を作成することもできますが、これを使用して関数を定義するのははるかに遅いため、使用しないことをお勧めします。伝統的な方法を使って。ただし、すべての関数は Function クラスのインスタンスと見なす必要があります。
定義した関数にパラメーターがない場合は、文字列 (つまり、関数の本体) をコンストラクターに渡すだけです。
注: コンストラクター Function() に渡されるパラメーターは、作成する関数の名前を指定しません。 Function() コンストラクターで作成された名前のない関数は、「匿名関数」と呼ばれることもあります。
Function() 関数を使用すると、関数ステートメントのプリコンパイルされた関数本体に制限されることなく、関数を動的に構築およびコンパイルできます。

関数リテラル 関数リテラルは、匿名関数を定義できる式です。関数リテラルの構文は、関数ステートメントの構文とよく似ていますが、ステートメントではなく式として使用され、関数名を指定する必要がない点が異なります。構文:
Js code

Copy code コードは次のとおりです:
var func = function( arg0, arg1, ... argN) { states };//関数リテラル

関数リテラルは名前のない関数を作成しますが、その構文では関数名を指定できることも規定されています。これは、自分自身を呼び出す再帰関数を記述するときに非常に便利です。たとえば、
Js コード

Copy code コードは次のとおりです。 :
var f = function fat(x) {
if (x return 1;
} else {
return x * fat (x - 1);
}
};

注: これは、実際には、fact() という名前の関数を作成するのではなく、関数本体がそれ自体を参照できるようにするだけです。名前。 1.5 より前のバージョンの JavaScript は、この名前付き関数リテラルを正しく実装していませんでした。

関数リファレンス 関数名には実際の意味はありません。関数を保存するために使用される変数の名前にすぎません。この関数を他の変数に代入しても起動できます。関数:
Js コード

コードをコピー コードは次のとおりです。

function square(x){return x*x;}
var a = square;
var b = a(5);//b is 25

This is a bit like a function pointer in C.
The difference between Function() constructor and function literal
The difference between Function() constructor and function literal is that the function created using constructor Function() does not use Lexical scope, on the contrary, they are always compiled by top-level functions, such as:
Js code
Copy code code As follows:

var y = "global";
function constructFunction() {
var y = "local";
//Function() constructor
return new Function("return y;");//Do not use local scope
}
function constFunction() {
var y = "local";
//Function literal
var f = function () {
return y;//Use local scope
};
return f;
}
//Display global because the Function() constructor returns The function does not use the local scope
alert(constructFunction()());
//Display global, because the function returns the function directly and uses the local scope
alert(constFunction()()) ;
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

機能とはどういう意味ですか? 機能とはどういう意味ですか? Aug 04, 2023 am 10:33 AM

ファンクションとは、関数を意味します。これは、特定の関数を備えた再利用可能なコード ブロックです。プログラムの基本コンポーネントの 1 つです。入力パラメータを受け取り、特定の操作を実行し、結果を返すことができます。その目的は、再利用可能なコード ブロックをカプセル化することです。コードの再利用性と保守性を向上させるコード。

Python の「enumerate()」関数の目的は何ですか? Python の「enumerate()」関数の目的は何ですか? Sep 01, 2023 am 11:29 AM

この記事では、Python の enumerate() 関数と「enumerate()」関数の目的について学びます。 enumerate() 関数とは何ですか? Python の enumerate() 関数は、データ コレクションをパラメータとして受け取り、列挙オブジェクトを返します。列挙オブジェクトはキーと値のペアとして返されます。キーは各項目に対応するインデックス、値は項目です。構文 enumerate(iterable,start) パラメータ iterable - 渡されたデータ コレクションは、iterablestart と呼ばれる列挙オブジェクトとして返すことができます。 - 名前が示すように、列挙オブジェクトの開始インデックスは start によって定義されます。無視したら

Python のコンストラクター Python のコンストラクター Sep 02, 2023 pm 04:29 PM

Python では、すべてのクラスにコンストラクターがあります。コンストラクターは、クラス内で指定される特別なメソッドです。コンストラクター/イニシャライザーは、クラスの新しいオブジェクトが作成されるときに自動的に呼び出されます。オブジェクトが初期化されるとき、コンストラクターはクラス内のデータ メンバーに値を割り当てます。コンストラクターを明示的に定義する必要はありません。ただし、コンストラクターを作成するには、次の規則に従う必要があります。クラスの場合、コンストラクターは 1 つだけ持つことができます。コンストラクター名は __init__ である必要があります。コンストラクターは、インスタンス プロパティを使用して定義する必要があります (最初の引数として self キーワードを指定するだけです)。 None 以外の値を返すことはできません。構文 classA():def__init__(self):pass 例 次の例を考えてみましょう。

MySQL.procテーブルの役割と機能の詳しい説明 MySQL.procテーブルの役割と機能の詳しい説明 Mar 16, 2024 am 09:03 AM

MySQL.proc テーブルの役割と機能の詳細な説明。MySQL は人気のあるリレーショナル データベース管理システムです。開発者が MySQL を使用する場合、多くの場合、ストアド プロシージャ (StoredProcedure) の作成と管理が必要になります。 MySQL.proc テーブルは非常に重要なシステム テーブルであり、ストアド プロシージャの名前、定義、パラメータなど、データベース内のすべてのストアド プロシージャに関連する情報が保存されます。この記事では、MySQL.proc テーブルの役割と機能について詳しく説明します。

C++ 構文エラー: クラスの外で定義されたコンストラクターは、クラス名を修飾子として追加する必要があります。どのように修正すればよいですか? C++ 構文エラー: クラスの外で定義されたコンストラクターは、クラス名を修飾子として追加する必要があります。どのように修正すればよいですか? Aug 22, 2023 pm 02:00 PM

C++ は広く使用されているオブジェクト指向プログラミング言語です。C++ でクラス コンストラクターを定義する場合、コンストラクターの定義をクラスの外に配置する場合は、コンストラクターの定義に修飾子としてクラス名を追加する必要があります。このコンストラクターがどのクラスに属するかを指定します。これは C++ 構文の基本的なルールです。クラスのコンストラクターを定義するときにこの規則に従わない場合、コンパイル エラーが表示され、「クラス外で定義されたコンストラクターはクラス名で修飾する必要があります。」というメッセージが表示されます。したがって、この種のコンパイル エラーが発生した場合は、次のことを行う必要があります。

PHP の file_exists() 関数 PHP の file_exists() 関数 Sep 14, 2023 am 08:29 AM

file_exists メソッドは、ファイルまたはディレクトリが存在するかどうかを確認します。チェックするファイルまたはディレクトリのパスを引数として受け取ります。これは、ファイルを処理する前に存在するかどうかを知る必要がある場合に役立ちます。これにより、新しいファイルを作成するときに、この関数を使用してファイルがすでに存在するかどうかを確認できます。構文 file_exists($file_path) パラメータ file_path - 存在をチェックするファイルまたはディレクトリのパスを設定します。必須。 return file_exists() メソッドが戻ります。ファイルまたはディレクトリが存在する場合は TrueFalse を返し、ファイルまたはディレクトリが存在しない場合は TrueFalse を返します。 例として、「candidate.txt」ファイルのチェックを見てみましょう。

Vue.use関数の使い方と機能 Vue.use関数の使い方と機能 Jul 24, 2023 pm 06:09 PM

Vue の使い方と機能.use Function Vue は、多くの便利な機能を提供する人気のフロントエンド フレームワークです。その 1 つは Vue.use 関数で、これを使用すると Vue アプリケーションでプラグインを使用できるようになります。この記事では、Vue.use 関数の使い方と機能を紹介し、いくつかのコード例を示します。 Vue.use 関数の基本的な使用法は非常に簡単です。Vue がインスタンス化される前に関数を呼び出し、使用するプラグインをパラメータとして渡すだけです。簡単な例を次に示します。 // プラグインの導入と使用

js関数の使い方は何ですか js関数の使い方は何ですか Oct 07, 2023 am 11:25 AM

js関数関数の使い方は、1. 関数の宣言、2. 関数の呼び出し、3. 関数のパラメータ、4. 関数の戻り値、5. 無名関数、6. パラメータとしての関数、7. 関数のスコープ、8. 再帰関数です。

See all articles