首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java脚本函数

Java脚本函数
EN

Stack Overflow用户
提问于 2021-03-21 21:13:27
回答 2查看 157关注 0票数 4

我在freeCodeCamp on YouTube为初学者准备的Java课程接近尾声时,我真的很困惑,因为视频中的那个家伙在变量"half“中存储了一个函数,如下所示:

代码语言:javascript
复制
const stats = {
  max: 56.78,
  standard_deviation: 4.34,
  median: 34.54,
  mode: 23.87,
  min: -0.75,
  average: 35.85
};
const half = (function () {

  return function half({ max, min }) {
    return (max + min) / 2.0;
  };

})();
console.log(stats);
console.log(half(stats));

我的问题是,为什么我们要把它复杂化,然后在变量中存储函数,然后在其中返回另一个函数,而我们只需键入

代码语言:javascript
复制
function half({ max, min }) {
  return (max + min) / 2.0;
};

在这种特殊情况下,他的方法有好处吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-21 21:22:21

在上面的特定示例中,没有理由,但有时您可能希望在该函数的本地范围中捕获某种状态,并以这种方式创建函数,从而使您可以封装某些作用域。例如,这个函数:

代码语言:javascript
复制
const someFunction = (function() {
  let someState = 0;
  return function() {
    return someState++;
  }
})();
someFunction(); // returns 0
someFunction(); // returns 1
someFunction(); // returns 2
票数 2
EN

Stack Overflow用户

发布于 2021-03-21 22:32:18

您需要了解js中函数的功能。

--为了回答你的问题,有很多好处,就像艺术,它给程序员-它给我们的灵活性,做事情的方式,我们希望他们是。

-当你写更多的代码时,你很快就可以使用它们了。现在别太担心,只要理解他们就行了。

函数是一流的对象,这意味着它们可以是:

存储在变量、对象或数组中的function.

  • returned

  • .

  • 作为参数传递给函数.

其中两个发生在上述代码中-它是:

从函数存储在variable.

  • returned中的
  • .

--这把我们带到了三种函数类型/类--

存储在没有名称的变量中的

  1. 函数称为匿名函数。

匿名函数是一个没有名称的函数。

示例:

代码语言:javascript
复制
let show = function () {
    console.log('Anonymous function');
};

show();

或者上面代码中的半变量中的无名称封闭函数。

  1. 另一部分是半变量,即立即调用的函数表达式自调用的

自动调用(启动)自调用表达式,而不调用.

如果表达式后面跟着(),函数表达式将自动执行。

e.g

代码语言:javascript
复制
(function () {
  var x = "Hello!!";  // I will invoke myself
})();

或者上面代码中的半变量中的无名称封闭函数是一个自调用函数。

上面的半变量是一个匿名的自调用表达式,这意味着它包含一个匿名自调用函数

function.

  1. 最后一件事--闭包高阶

闭包是一个访问父作用域的函数,即使父函数已经关闭/调用。

函数半可被视为闭包。如果匿名自调用函数中有一个变量与半变量相匹配,则即使调用了半表达式,它也可以访问该变量。

高阶函数是一个函数,它接受另一个函数作为输入,或者返回一个函数,或者两者兼而有之。

匿名自调用函数可以称为匿名高阶函数,因为它返回另一个函数。

在这里阅读更多https://www.freecodecamp.org/news/discover-the-power-of-first-class-functions-fd0d7b599b69/

https://www.w3schools.com/js/js_function_closures.asp

https://www.freecodecamp.org/news/a-quick-intro-to-higher-order-functions-in-javascript-1a014f89c6b/

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

https://stackoverflow.com/questions/66737608

复制
相关文章

相似问题

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