为函数(带参数)赋一个变量名? [JavaScript的]

时间:2016-09-29 00:32:19

标签: javascript functional-programming

我决定自学函数编程。

我已经提交了所有作业,同时保持了函数式编程的规则,而且我的导师完全没问题。为了获取输入,我一直在做这样的事情:

var getWidth = function(){
  return prompt("What is the width?");
};

这样可以正常工作,但可能更简单,例如:

var getWidth = prompt("What is the Width?");

问题在于,当我调用函数getWidth()时,它只运行一次函数并将其分配给getWidth变量。但这不是我想要的,我希望每次调用prompt("What is the Width?")时都运行getWidth()。我试图搜索它,但我并不完全确定如何表达它。如果您知道如何使用Google,则Google非常有用。

4 个答案:

答案 0 :(得分:1)

你可以使用bind()

var hm = window.prompt.bind(window, "simpler?");
console.log(hm());

答案 1 :(得分:1)

  

它可能更简单,例如:

你不能简化"功能

var a = function onePlusTwo() {
  return 1 + 2;
};

写作

var a = 1 + 2;

两者完全不同。

第一个定义一个函数(意思是,执行它),并将函数分配给变量a。然后可以使用a()调用该函数,评估3,因为这是函数的返回值:

alert(a() * 2)  // 6

第二个(var a = 1 + 2;)仅执行函数体中的代码。执行它会将1 + 2的结果分配给变量a。此代码可重复使用"只能通过复制并将其粘贴到程序的其他位置。

因此,如果您想定义功能并重新使用它,您别无选择,只能将其定义为函数。那是什么功能!

如果你想使用一个函数并创建另一个函数,你可以使用以后调用该函数,有或没有一些参数,然后如另一个答案所述,你可以使用bind,如{{1}然后使用var a = prompt.bind(window, "What is the width?");调用它。但这与以第一个示例中的方式编写函数基本相同,并且可读性稍差。

顺便说一句,这些都不是"功能编程"。函数式编程并不仅仅意味着使用函数;所有程序都这样做。函数式编程是指一种涉及操作,组合,动态创建和传递函数的编程风格。

答案 2 :(得分:0)

您不能以这种方式简化您的功能。通过第一种方法:

var getWidth = function(){
  return prompt("What is the width?");
}; 

您正在返回一个可执行函数,并将函数引用分配给变量getWidth。然而在第二个:

var getWidth = prompt("What is the Width?");

您将返回函数window.prompt的结果。

答案 3 :(得分:0)

OP可能正在寻找的是lambda功能简写。这是一个非常简单的代码,让你的权利功能更短。它通常用于匿名函数,但它可以很容易地重新用于此处。例如:

function getWidth(){
   return prompt("What is the width?");
}

将减少为:

var getWidth() = () => prompt("What is the width?");

请注意,系统会自动返回提示值,因此您无需在代码中添加return

如果需要,也可以指定参数,如下所示:

var getWidth = (x) => prompt(x);

如果你以这种方式使用参数,那么()是可选的。这也有用:

var getWidth() = x => prompt(x);