首页 > 解决方案 > Javascript - 将静态值传递给回调函数

问题描述

我想用一些参数创建回调函数,但我希望其中的一个值永远不会改变并在创建函数时设置!

let a = 2;
let y = (b) => { let staticValue = a; return staticValue * b; }

y(1) => 2 -> OK

然后

a = 3
y(1) => 3 -> Not OK -> I want the function to have the original value of a.

我知道,这是因为仅在调用函数时才评估变量 a 。但是有什么解决方法吗?

标签: javascript

解决方案


您可以使用所谓的IIFE(立即调用的函数表达式)来完成此操作

let a = 2;
const y = (staticValue => b => staticValue * b)(a);

a = 44;
console.log(y(1));

这里发生的是你有两个功能。第一个staticValue => ...被立即调用,并被staticValue赋予 的值a。由于a是作为 IIFE 的参数给出的,因此一旦调用该函数staticValue就不会改变,即使 的值a改变了。

第一个函数的返回值是第二个函数,b=> ....


推荐阅读