1
1. $(function () {
       function foo() { return true; }
       log(bar());                        // getting error
       var bar = function() { return true; };   
  });

2. $(function () {
       function foo() { return true; }
       var bar = function() { return true; };
       log(bar());                        // Working   
  });

ここでの私の混乱は、以下の2つの宣言の違いと、どちらが役立つかということです。

var bar = function() { return true; };

function bar(){ return true; };
4

2 に答える 2

4

function bar(){ return true; };

function declaration通訳が一番上に持ち上げているので、どこからでも電話をかけることができます

var bar = function() { return true; };

定義されたでのみ呼び出すことがfunction expressionできます。あなたがやっていたように、それはコードの前または上では利用できません:

log(bar());                        // getting error
var bar = function() { return true; }; 

最初の行barがまだ利用できないため、エラーが発生します。これを解決するには、必要function declarationに応じて代わりに使用してください。


function declarationとの違いについて詳しく知るには、 Kangaxfunction expressionによるこのすばらしい記事を読むことを強くお勧めします。

于 2012-06-11T06:49:46.593 に答える
0

Sarfrazはすでに素晴らしい説明を得ています。最初の関数をさらに追加したいのですが、

var bar = function(){ return true; };

ははるかに柔軟性があり、宣言された後にいくつかのプロパティまたはメソッドを追加できます。

bar.anotherMethod = function() { alert("This is another method"); }
bar.anotherProperty = 'some value';

そのfunction bar(){ return true; }ようにすることはできませんが。`

于 2012-06-11T06:55:38.110 に答える