【问题标题】:JavaScript functionCall(arg1)(arg2)JavaScript 函数调用(arg1)(arg2)
【发布时间】:2015-04-03 11:06:39
【问题描述】:

我正在学习 JavaScript,我找到了这个例子

say("Hello")("World"); 

此代码应返回“Hello World”。

我不知道如何实现这一点,即使谷歌搜索什么关键字类型也能找到解决方案。你能告诉我这种模式的名称是什么,或者如何在 JavaScript 中实现它?

【问题讨论】:

  • 你可以在什么样的变量上使用()?你知道那是什么类型吗?
  • 我只打电话...这是锻炼

标签: javascript


【解决方案1】:

你可以这样做:

function say(firstword){
    return function(secondword){
     return firstword + " " + secondword;   
    }
}

http://jsfiddle.net/o5o0f511/


但在实践中你永远不会这样做。我确定这只是为了教你函数如何返回可执行函数。

这里有更多这种模式的例子:

How do JavaScript closures work?

【讨论】:

  • 说它应该返回“Hello World”,而不是提醒它。
  • @theonlygusti 已更正 - 虽然很迂腐,但基本逻辑相同。
【解决方案2】:

也许你可以尝试闭包:

var say = function(a) {//<-- a, "Hello"
  return function(b) {//<-- b, "World"
    return a + " " + b;
  };
};

alert(say("Hello")("World")); //<--  "Hello World"

这里,当say("Hello") 被调用时,它返回内部块。稍后使用("World") 调用的内部块返回串联字符串“Hello World”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2011-08-28
    • 2013-05-01
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多