gpt4 book ai didi

javascript - 返回函数供进一步使用,但不存储旧结果

转载 作者:行者123 更新时间:2023-11-30 00:19:52 24 4
gpt4 key购买 nike

我正在尝试执行以下操作:

function sum(a) {
return function (b) {
console.log(a + b);
}
}
var mySum = sum(10);
mySum(15);

输出:

25

没有存储第一个结果,所以第二个函数种类替换第一个:

function sum(a) {
return function (b) {
console.log(a + b);
}
}
sum(10);
sum(15);

输出将是:

25

这可能吗?

谢谢。

最佳答案

这是可能的。只需将 sum 首次执行时的引用更改为内部函数即可。如下图

function sum(a) {
sum = function (b) { // here first time sum executes, it changes its reference
console.log(a + b);
}
}

输出

sum(10);
sum(5); --> 15

评论 : 它也在 nodeJS 中工作

enter image description here

正如聊天中所讨论的,使用 NodeJS 模块 时的问题是变量引用 sum。在我们的程序中,我们在第一次执行后使用和引用来指向不同的函数实例。但是 require 将获得 sum 的引用,并且在该文件中我们使用另一个引用变量指向它。当我们使用其他引用变量调用时,它不会像引用 sum 那样更新其引用。下面的代码是解决方法

求和

exports.sum = function(a) { 
exports.sum = function (b) {
// here first time sum executes, it changes its reference
console.log(a + b);
}
}

运行.js

var sumFunction = require('./sum.js');
sumFunction.sum(10);
sumFunction.sum(5); //15

我建议不要使用这种模式,因为这会增加代码中的歧义。您问题中的第一种模式是解决此类问题的正确方法。如果我找到任何更好的模式,我会更新这个答案。

关于javascript - 返回函数供进一步使用,但不存储旧结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33574649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com