javascript - 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 。但是有什么解决方法吗?
解决方案
您可以使用所谓的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=> ...
.
推荐阅读
- c++ - 如何从 MFC 中的 COLORREF 中提取 RGB 值?
- gcc - GNU GCC 程序集中的本地标签地址
- python - 熊猫自动将列值更改为日期时间
- github - 来自分支 master 的提交出现在其他分支中 - GitHub
- node.js - 在尝试调用 Node.js 函数时,获取 func.call 不是 React 中的函数。我的问题是什么?
- cmake - CPack Deb 生成器排除文件/目标
- strava - 为什么 Strava API 的 segment_eforts 总是返回空结果?
- python - 多处理线程池在最后停止
- scala - Spark 单元测试打破了转换链?
- batch-file - 使用 Jenkins 从 sftp 下载多个文件