我决定自学函数编程。
我已经提交了所有作业,同时保持了函数式编程的规则,而且我的导师完全没问题。为了获取输入,我一直在做这样的事情:
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非常有用。
答案 0 :(得分:1)
答案 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);