5

重複の可能性:
JavaScript:var functionName = function(){} vs function functionName(){}
Javascriptでの関数式と宣言の違いは何ですか?

私はjavascriptの「ベストプラクティス」を理解しようとしています。

このコードはjqfundementals.comからのものです

// create a function that will greet a person,
// and assign the function to the `greet` variable
var greet = function( person, message ) {
  var greeting = 'Hello, ' + person + '!';
  log( greeting + ' ' + message );
};

greet( 'Jory', 'Welcome to JavaScript' );
greet( 'Rebecca', 'Thanks for joining us' );

関数をgreet変数に割り当てる必要があるのはなぜですか?

私の最初の衝動は、次のように書くことです。

function greet ( person, message ) {
  var greeting = 'Hello, ' + person + '!';
  log( greeting + ' ' + message );
};

これら2つの実装の違いは何ですか?

4

2 に答える 2

1

これらのスニペット間に違いはありませんが、定義の前の行で前者の関数を呼び出すことができるホイストを除きます。しかし、これはウォーミングアップのための単純な例にすぎません。実際には、これらの関数を変数に割り当てるのではなく、他の関数に直接渡します。または、式のコンテキストでそれらを使用します。または、格納する関数を動的に決定します。または本当に他の何か。

于 2012-09-10T18:22:41.960 に答える
-2

実際の違いはありませんが、varフォームを使用すると、再帰関数がある場合に使用前に宣言できます。

簡単な例:

var func1, func2;

func1 = function (count) {
    count = count - 2;
    if (count > 0) {
        func2(count);
    }
}

func2 = function (count) {
    func1(count + 1);
}

func1(10);

それでも

function func1 (count) {
    count = count - 2;
    if (count > 0) {
        func2(count);
    }
}

function func2 (count) {
    func1(count + 1);
}

func1(10);

も完全に受け入れられます。インタプリタは、変数巻き上げのため、前者に置き換えます。

于 2012-09-10T18:21:44.460 に答える