1

送信する前に、この投稿について慎重に考えていませんでした。申し訳ありません。

4

4 に答える 4

1

2番目の例は無効です:

return{       
        init();
    }

{ ... }、 のようなキーと値のペアを含む必要があるオブジェクト リテラルを定義します{ foo: 'bar' }

于 2010-10-31T03:51:27.173 に答える
1

最初の例は、内で処理を行い、initを返しundefinedます。

2 番目の例は無効です。私はあなたが欲しかったと思います:

return init()

中括弧なし。initこれは(指定していない)の結果を返します。どちらの場合も、setup呼び出さmoreSetupれることはないので、なぜそこにいるのかわかりません。

多くの詳細を省きましたが、今の私の答えは次のとおりです。呼び出し元が結果に対して何かをする必要があるinit場合は、オプション 2 を使用する必要があります。

于 2010-10-31T04:07:35.530 に答える
0

気分を害するつもりはありませんが、これはやや混乱した質問のように思えます。init()他の人が指摘したように、2 番目の例では括弧を使用しないでください。そして、関数を呼び出すのではなく定義するだけだと言うfunction setup() { ... }ときは、この例では関数が呼び出されないことを意味します。

しかし、私がこの回答を投稿して対処しようとしている主なことは、「init関数を呼び出すvs.その関数呼び出しを返す」です。2 番目の例で「関数呼び出しを返す」と考えるのは誤りです。と言うとreturn init()、最初init()に が呼び出されて何らかの値が返され、次にfoo関数が によって返された値が返されinit()ます。

それがあなたが尋ねるべき質問です。fooを呼び出したいだけですinitか、それともfoo呼び出しinitて戻り値をinit返したいですか? それが2つの違いです(他のエラーが削除された後)。

于 2010-10-31T04:22:48.883 に答える
0

私のように init で関数を呼び出すというアイデアにまだ興奮している場合:)、次のように関数を設計できます。

var mainFunction = function() {
  var init = () => {
    functionOne();
    functionTwo();
  }

  function functionOne(){
    console.log('I am the first one');
  }

  function functionTwo(){
    console.log('I came second?');
  }

  return {
   init: init
  };
}(); // please note the () - call the function here or use
// mainFunction().init()

mainFunction.init();
于 2018-05-24T09:38:41.020 に答える