微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将函数分配给Javascript中的变量并使用声明进行调用

如何解决将函数分配给Javascript中的变量并使用声明进行调用

我来自Python背景,最近开始学习Javascript。我对函数如何分配给变量以及它们如何返回数据有些困惑。

请考虑以下对象:

DecimalFormat df = new DecimalFormat("#.####");

System.out.println(df.format(d));

当我只声明一个普通函数和日志时,我得到适当的输出

const stats = {
    max: 53.8,min: 34.9,std: 6.5
};

但是,我所指的教程使用一种怪异的方式来完成相同的事情,就像这样:

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

console.log(half(stats));

在这里不明白的是:

  1. 需要两个嵌套的返回值(功能相当简单,我不明白为什么需要两个返回值)
  2. const half = (function() { return function half(stats) { return (stats.min + stats.max) / 2.0; }; })(); console.log(half(stats)); 关键字之前开始并以较大的块结尾的括号
  3. 最有趣的是,function位于整个代码块的末尾,是否意味着该函数在声明后就立即被调用

此外,当我尝试使用自己的Python经验以一种更简单的方式重写同一件事时,这似乎也可以解决问题。像这样:

();

任何人都可以向我解释该教程提供的代码中发生了什么吗?另外,也许您可​​以回答上面提出的3个问题。谢谢!

解决方法

请参阅。 https://www.w3schools.com/js/js_function_closures.asp(即将结束)

,

您必须在此处了解几个概念,

函数声明

 function half(stats) {
        return (stats.min + stats.max) / 2.0;
    };
    
    console.log(half(stats));

函数表达式

 const half = function(stats) {
        return (stats.min + stats.max) / 2.0;
    };
    
    console.log(half(stats));

了解更多-https://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/

立即调用的函数表达式

const half = (function() {

    return function half(stats) {
        return (stats.min + stats.max) / 2.0;
    };
})(); // this will immediately execute without any invocation

console.log(half(stats));

在此处了解更多-http://adripofjavascript.com/blog/drips/an-introduction-to-iffes-immediately-invoked-function-expressions.html

关闭-https://www.tutorialsteacher.com/javascript/closure-in-javascript

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。