2

私はJavascriptで関数を宣言するこれらの2つの方法に出くわしています。

1つは、関数が返すものは何でもあると宣言する代入式です。foo

var foo = function(){

//do something
};

そして、関数を宣言する別の方法は、それをより大きなオブジェクトのプロパティにするようです:

foo:function(){//何かをする}

オブジェクトコンテキストでその関数にアクセスする必要がある場合は、2番目の形式を使用すると想定しています。

myobject.foo();

2番目のフォームの固有名は何ですか?

4

2 に答える 2

3

どちらも無名関数で、最初の関数は変数に割り当てられ、2 番目の関数はオブジェクト リテラルのプロパティに割り当てられます。

代入式は次のとおりであることに注意してください。

foo = something

この場合、 somethingはたまたま無名関数ですが、代入式という用語は、関数だけでなく、すべての代入に使用されます。

于 2012-05-01T22:45:29.350 に答える
1

以下:

var foo = function(){
  //do something
}; 

右側はFunctionExpressionです。これは、コードが実行されるまで関数が作成されないという点で FunctionDeclaration とは異なります。これは、関数宣言が処理され、変数の開始が発生した後です。

関数宣言ではありません。

> foo: function() {
>  //do something
> }

これも関数式で、最初と同じ形式にします。

var obj = {};
obj.foo = function(){...};

また、コードが実行されたときにのみ作成されます。上記の 2 つの間に実質的な違いはありません。最適と思われるものを使用してください。

編集

ああ、関数式では、名前はオプションです (IE と名前付き関数式の問題のため、一般的に推奨されません)。

于 2012-05-01T22:50:58.230 に答える