JavaScript:调用init函数与返回该函数调用

时间:2010-10-31 03:45:28

标签: javascript function return init

在提交之前没有仔细考虑这篇文章。道歉。

4 个答案:

答案 0 :(得分:1)

你的第二个例子无效:

return{       
        init();
    }

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

答案 1 :(得分:1)

您的第一个示例将执行init内的内容并返回undefined

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

return init()

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

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

答案 2 :(得分:0)

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

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

这就是你应该问的问题。我只是希望foo致电init,还是希望foo致电init并返回init返回的值?这是两者之间的差异(一旦其他错误被删除)。

答案 3 :(得分: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();