1

在提交之前没有仔细考虑这个帖子。道歉。

4

4 回答 4

1

您的第二个示例无效:

return{       
        init();
    }

定义了一个对象字面量,{ ... }它必须包含键值对,例如{ foo: 'bar' }.

于 2010-10-31T03:51:27.173 回答
1

您的第一个示例将在内部完成init并返回undefined

您的第二个示例无效。我想你想要:

return init()

没有花括号。这将返回init(您尚未指定)的结果。在这两种情况下,都setup不会moreSetup被叫到,所以我不确定他们为什么在那里。

你遗漏了很多细节,但我现在的回答是:如果调用者需要对结果做某事,init你需要使用选项#2。

于 2010-10-31T04:07:35.530 回答
0

没有冒犯的意思,但这似乎是一个有点混乱的问题。正如其他人所指出的,您不应该init()在第二个示例中使用括号。当你说function setup() { ... }你只是定义函数,而不是调用它时——这意味着在这个例子中函数永远不会被调用。

但我发布这个答案试图解决的主要问题是:“调用初始化函数与返回该函数调用”。在第二个示例中认为您正在“返回函数调用”是不正确的。当您说时return init(),首先init()调用并返回一些值,然后您的foo函数返回由返回的值init()

所以这就是你应该问的问题。我只是想foo调用init,还是想foo调用init并返回返回的值init?这就是两者之间的区别(一旦其他错误被删除)。

于 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 回答