gpt4 book ai didi

javascript - 将函数分配给javascript中的变量?

转载 作者:行者123 更新时间:2023-12-01 00:36:23 26 4
gpt4 key购买 nike

我曾经有类似以下的东西......

var setFoo = function (value1) {
window.localStorage.setItem('foo1', value1);
}

var setFoo2 = function (value2) {
window.localStorage.setItem('foo2', value2);
}

..但是,我发现我一直在做...
window.localStorage.setItem('something', value);

...所以我决定把它变成一个函数...
function genericSetFoo(name, value) {
window.localStorage.setItem(name, value);
}

...并改用以下内容...
var setFoo = genericSetFoo('foo1', value1);
var setFoo2 = genericSetFoo('foo2', value2);

...但是,现在当我尝试调用 setFoo1(value1)setFoo2(value2) ,应用程序提示 value1value2正在 undefined .我究竟做错了什么?我的意思是我还可以做...
var setFoo = function(value1) { genericSetFoo('foo1', value1) };
var setFoo2 = function(value2) { genericSetFoo('foo2', value2) };

...而且它也可以工作...但是如果我无论如何都必须重新定义该功能,它就会失败。那么我该如何解决呢?

最佳答案

您可以使用.bind()在这个情况下。这种技术被称为“部分函数评估”:

var setFoo = genericSetFoo.bind(null, 'foo1');
var setFoo2 = genericSetFoo.bind(null, 'foo2');

setFoo(value1);

如果你使用 lodash 或下划线,你可以使用 _.partial()这与 .bind 不同因为它不需要第一个参数并且不重新绑定(bind) this值(value):
var setFoo = _.partial(genericSetFoo, 'foo1');
var setFoo2 = _.partial(genericSetFoo, 'foo2');

关于javascript - 将函数分配给javascript中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40839598/

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