ホームページ >ウェブフロントエンド >jsチュートリアル >関数宣言と関数式の違いは何ですか?

関数宣言と関数式の違いは何ですか?

一个新手
一个新手オリジナル
2017-10-10 10:24:581998ブラウズ


1. 関数を定義する方法

関数を定義するには、関数宣言と関数式の 2 つの方法があります。
関数宣言の構文は次のとおりです:

function functionName(arg0,arg1){//函数体}

最初に関数キーワード、次に関数名です。関数名を指定する方法は次の 2 つです。関数宣言に関して、その最も重要な機能の 1 つは 関数宣言のプロモーション です。これは、コードを実行する前に関数宣言が読み取られることを意味します。これは、関数宣言をそれを呼び出すステートメントの後に配置できることを意味します。例:

a();function a(){alert("a");}//a
この例は、コードを実行する前に関数宣言が読み取られるため、問題が発生することはありません。

関数を作成する 2 番目の方法は関数式です。以下は最も一般的な方法です:

var a = function(arg0,arg1){//函数体};

この形式は通常の変数代入ステートメントのように見えます。つまり、関数を作成して変数 a に代入します。この場合、関数キーワードの後に​​識別子がないため、これは匿名関数と呼ばれます。

関数式には、他の式と同様に、使用する前に値
を割り当てる必要があります。次のコードはエラーになります:

a();var a = function(){alert("a");};//错误//补充说明:使用该方法定义函数,只有变量声明提前了,变量初始化代码仍在原来的位置
2. 関数宣言と関数式の違い

1. 関数宣言内の関数名は必須ですが、関数式内ではオプションです。

//函数声明
    function sum(a, b) {
        return a + b;
    }
    alert(sum(1, 2));
//函数表达式
    /* var s = function sum(a, b) {
        return a + b;
    }
    alert(s(1, 2)); */

    var s = function(a, b) {
        return a + b;
    }
    alert(s(1, 2));    //以上两种都可以

2. 関数宣言で定義された関数は関数宣言の前に呼び出すことができますが、関数式で定義された関数は宣言の後にのみ呼び出すことができます。

基本的な理由は、パーサーがこれら 2 つの定義メソッドを読み取る順序が異なるためです。パーサーは関数宣言を読み取ります。つまり、関数宣言は任意の位置で呼び出すことができますが、関数式の場合、パーサーは関数宣言を読み取ることができます。読み取りのみ 関数式が配置されている行まで実行は開始されません (詳細については、第 1 部「関数の定義方法」を参照してください)。

以上が関数宣言と関数式の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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