首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为一个函数(带有参数)分配一个变量名?[JavaScript]

为一个函数(带有参数)分配一个变量名?[JavaScript]
EN

Stack Overflow用户
提问于 2016-09-29 00:32:19
回答 4查看 55关注 0票数 0

我决定自学函数式编程。

我已经提交了我所有的作业,同时维护了函数式编程的规则,我的老师对此完全没有意见。为了获取信息,我一直在做这样的事情:

代码语言:javascript
运行
复制
var getWidth = function(){
  return prompt("What is the width?");
};

这很好,但是它可以更简单一些,比如:

代码语言:javascript
运行
复制
var getWidth = prompt("What is the Width?");

这方面的问题是,当我调用函数getWidth()时,它只运行一次函数并将其分配给getWidth变量。但这不是我想要的,每次调用prompt("What is the Width?")时,我都希望它运行getWidth()。我试过寻找它,但我并不完全确定如何表达它。谷歌是有用的,如果你知道如何使用它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-11-10 06:48:29

行动小组可能要找的是兰达功能速记。这是一个非常简单的代码,让我们正确的函数短得多。它通常用于匿名函数,但在这里很容易被重新使用。例如:

代码语言:javascript
运行
复制
function getWidth(){
   return prompt("What is the width?");
}

将减少为:

代码语言:javascript
运行
复制
var getWidth() = () => prompt("What is the width?");

请注意,提示符的值将自动返回,因此不需要将return添加到代码中。

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

代码语言:javascript
运行
复制
var getWidth = (x) => prompt(x);

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

代码语言:javascript
运行
复制
var getWidth() = x => prompt(x);
票数 0
EN

Stack Overflow用户

发布于 2016-09-29 00:46:29

你可以用bind()

代码语言:javascript
运行
复制
var hm = window.prompt.bind(window, "simpler?");
console.log(hm());

票数 1
EN

Stack Overflow用户

发布于 2016-09-29 03:12:16

它可以更简单一些,比如:

你不能“简化”一个函数

代码语言:javascript
运行
复制
var a = function onePlusTwo() {
  return 1 + 2;
};

通过写作

代码语言:javascript
运行
复制
var a = 1 + 2;

这两者所做的事情完全不同。

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

代码语言:javascript
运行
复制
alert(a() * 2)  // 6

第二个(var a = 1 + 2;)只执行函数正文中的代码。执行它将1 + 2的结果分配给变量a,这段代码只有在程序的其他地方复制和粘贴才能“重用”。

因此,如果您想要定义功能并重用它,您别无选择,只能将其定义为一个函数。这就是函数的作用!

如果您想要获取一个函数并创建另一个函数,您以后可以使用它来调用该函数,无论是否带有一些参数,然后,正如另一个答案中所提到的,您可以使用bind (在var a = prompt.bind(window, "What is the width?");中),然后使用a()调用它。但从本质上讲,这与按照第一个示例编写函数的方式是一样的,而且可读性有点差。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39759589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档