【发布时间】:2019-09-13 10:31:39
【问题描述】:
所以这是我正在尝试使用的一些代码
const someFunc = (a) => (b) => a + b;
const someArray = [1, 2];
const firstOrder = someArray.map(a => someFunc(a));
firstOrder[0] === firstOrder[1]; // returns false
我不确定为什么这是一个具有不同内存位置的函数。
我期待完成一个类似的功能,其中
firstOrder[0] === firstOrder[1]; // should return true
我不确定这样的事情是否可行。
这里的主要动机是避免内存占用。
我想我可以在这里使用一些帮助。
提前致谢。
【问题讨论】:
-
不同作用域的函数之间永远不会
===。不过,这听起来有点像过早的优化,除非您正在运行性能测试并确定这确实是一个瓶颈......?如果必须,我会保存对someArray的引用,并使用它和返回数字而不是函数的someFunc,而不是使用.map,这样你就只有one 基元数组和 一个 函数在内存中, -
someFunc(1)和someFunc(2)是非常不同的函数,不是吗?当使用相同的输入调用它们时,它们甚至不会返回相同的结果:someFunc(1)(3)!=someFunc(2)(3)。 -
@CertainPerformance 不确定我是否明白,如果你能写一些代码会很有帮助。
标签: javascript lambda functional-programming closures