ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript カスタム関数の書き方

JavaScript カスタム関数の書き方

青灯夜游
青灯夜游オリジナル
2021-07-06 15:11:034934ブラウズ

JS カスタム関数の書き方: 1. "関数 関数名([args]){code}"; 2. "var 関数名=new Function(p1, p2, ..., pn, body );"; 3. "関数 ([args]){code}"。

JavaScript カスタム関数の書き方

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

JavaScript で関数をカスタマイズするには、function ステートメントを使用する方法、Function() コンストラクターを使用する方法、および関数リテラルを定義する方法の 3 つがあります。

#関数の宣言

JavaScript では、function ステートメントを使用して関数を宣言できます。具体的な使用法は次のとおりです。

function funName([args]) {
    statements
}

funName は関数名であり、変数名と同様に、有効な JavaScript 識別子である必要があります。関数名の後には、括弧で囲まれ、カンマで区切られたパラメータのリストが続きます。パラメータはオプションであり、数に制限はありません。

識別子として、パラメーターは関数本体内でのみアクセスされ、パラメーターは関数スコープのプライベート メンバーです。関数を呼び出すときは、関数に値を渡し、パラメータを使用して外部から渡された値を取得し、関数本体内で関数の実行に介入します。

括弧の後には中括弧があり、中括弧内に含まれるステートメントが関数本体構造の主な内容です。関数本体では中括弧が必須ですが、中括弧がないと JavaScript は構文エラーをスローします。

関数ステートメントには関数名、括弧、中括弧が含まれている必要があり、他のコードは省略できるため、最も単純な関数本体は空の関数です。

function funName() {}  //空函数

匿名関数を使用する場合、関数名は省略できます。

function () {}  //匿名空函数

var ステートメントと function ステートメントはどちらも宣言ステートメントであり、宣言された変数と関数は、変数プロモーションや関数プロモーションとも呼ばれる JavaScript のプリコンパイル中に解析されます。プリコンパイル期間中、JavaScript エンジンは各関数のコンテキストを作成し、変数オブジェクトを定義し、関数内のすべての仮パラメーター、プライベート変数、および入れ子関数を変数オブジェクトの属性として登録します。


Function() コンストラクター

Function() コンストラクターを使用して、関数をすばやく生成します。具体的な使い方は以下の通りです。

var funName = new Function(p1, p2, ..., pn, body);

Function()のパラメータの型は全て文字列、p1~pnは作成した関数のパラメータ名のリスト、bodyは作成した関数の関数構造文、その間は本体ステートメントはセミコロンで区切ります。

例 1

すべてのパラメーターを省略し、関数本体を表す文字列のみを渡すことができます。

var f = new Function ("a", "b", "return a+b");  //通过构造函数来克隆函数结构

上記のコードでは、f は作成された関数の名前です。同じ関数を定義し、同じ構造の関数を function ステートメントを使用して設計できます。

function f(a, b) {  //使用function语句定义函数结构
    return a + b;
}

例 2

Function() コンストラクターを使用して、パラメーターを指定せずに空の関数構造を作成します。

var f = new Function();  //定义空函数

Function() コンストラクターを使用して関数を動的に作成します。ユーザーは、関数ステートメントで事前に宣言された関数本体に制限されません。 Function() コンストラクターを使用すると、関数を構造体としてではなく式として使用できるため、より柔軟に使用できます。欠点は、Function() コンストラクターが実行中にコンパイルされるため、実行効率が非常に低く、通常はその使用が推奨されないことです。

匿名関数 (関数リテラル)

関数リテラルは匿名関数とも呼ばれます。つまり、関数には関数名がなく、関数名だけが含まれます。関数キーワード、パラメータ、関数本体が含まれます。具体的な使用法は次のとおりです。

function ([args]) {
    statements
}

例 1

次のコードは関数リテラルを定義します。

function (a, b) {  //函数直接量
    return a + b;
}

上記のコードでは、関数リテラルは基本的に関数ステートメントを使用して関数構造を定義するのと同じであり、その構造は固定されています。ただし、関数リテラルは関数名を指定せず、関数の構造をキーワード function で直接表現したものであり、このような関数を無名関数とも呼びます。

例 2

匿名関数は式、つまり関数式であり、関数構造のステートメントではありません。次に、無名関数を値として変数 f に代入します。

//把函数作为一个值直接赋值给变量 f
var f = function (a, b) {
    return a + b;
};

関数構造体が値として変数に割り当てられている場合、変数は関数として呼び出すことができ、変数は無名関数を指します。

console.log(f(1,2));  //返回值3

例 3

匿名関数は値として機能し、より複雑な式操作に参加できます。上記の例では、次のコードを使用して、関数の定義と呼び出しの統合操作を完了できます。

console.log(  //把函数作为一个操作数进行调用
    (function (a,b) {
        return a + b;
    })(1, 2));  //返回数值3

【関連する推奨事項:

JavaScript 学習チュートリアル

以上がJavaScript カスタム関数の書き方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。