-1

重複の可能性:
JavaScript: var functionName = function() {} vs function functionName() {}

Javascript で関数を宣言するには、次の 2 つの方法があります。

構文 1:

function myFunction() {
    // something awesome
};

構文 2:

var myFunction = function() {
    // somtehing even more awesomer
};

構文 1 は、適切に記述されたコードよりもレガシー コードで多く見られるように思えます (ただし、これは純粋に経験的なことです)。

Q : ある構文を他の構文より優先する必要がありますが、その理由は何ですか?

4

4 に答える 4

1

私が考えることができる唯一の違いはここにあります:

このコードは実行されません:http://jsfiddle.net/JdCRq/

myFunction();

var myFunction = function() {
    console.log('test');
};

このコードはそうですが:http://jsfiddle.net/JdCRq/1/

myFunction();

function myFunction() {
    console.log('test');
}

function2番目の例のコンテキストでは、ブロックは、コードが実際に実行される前に(少なくとも名前で)宣言されているように見えます。

于 2012-10-03T18:25:21.027 に答える
0

最初の例は、関数を宣言する通常の方法です。

2 番目の例は、変数に割り当てられる無名関数です。これは、関数をオブジェクトのメンバーとして宣言するか、クラスのプロトタイプに割り当てるときに使用されます。また、関数を宣言する通常の方法で十分な場合に、通常の変数に割り当てるときにも使用されることがあります。

例の唯一の実質的な違いは、2 番目の方法が実行時に割り当てられることです。関数を再定義すると、コードが解析されるときに発生するため、最後の関数のみが存在します。

console.log(f()); // shows 2

function f() { return 1; }

console.log(f()); // shows 2

function f() { return 2; }

console.log(f()); // shows 2

(ただし、コードを理解するのが難しくなるため、通常はそのような関数を再定義しません。)

匿名関数では、割り当てられるまで存在せず、再割り当てされると新しい関数に変更されます。

condole.log(f); // shows undefined

var f = function(){ return 1 };

console.log(f()); // shows 1

f = function(){ return 2 };

console.log(f)); // shows 2
于 2012-10-03T18:33:05.320 に答える