gpt4 book ai didi

javascript - 如何通过定义为函数的变量将对象名称作为参数传递给另一个函数?

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

在我的扩展代码中,我遇到了一个 TypeError,我认为这与我没有成功地将一个对象作为一个函数的参数传递,然后通过一个定义为函数的变量,然后传递到最终函数有关。

更具体地说,我正在调用变量 executeOnce(定义为函数)并将参数 options 传递给它。然后这个自执行函数必须将这个 options 参数传递给 funB()(即 funB(options)),但我没有认为传递的参数正在传递给 funB()。因此错误。

我错过了什么?

在下面的代码中,如果我将 funB(options); 更改为字符串(即 funB("options");),它会起作用,但我可以' 这样做是因为在我的扩展代码中我传递了各种参数。

const obj = {
options: {
spam: 4
},
};

function funB(options) {
obj[options].spam = 6; // the console log below should print "6" but doesn't
}

var executeOnce = (function (options) {
var executed = false;
return function () {
if (!executed) {
executed = true;
funB(options); // the function works if i change this to 'funB('options');'
}
};
})();

funA('options');
function funA(options) {
executeOnce(options);
}

console.log('= ' + obj.options.spam)

最佳答案

你在 executeOnce 处错了,你使用 immediate function 语法为 executeOnce 变量构建一个值(听起来不错),但是 executeOnce 是一个没有any 参数的函数,你可以看到你的返回语句。

var executeOnce = (function (options) { // `options` - does not make sense
var executed = false;
return function () {
if (!executed) {
executed = true;
funB(options);
}
};
})();

试试我的方法,返回一个以options为参数的函数。

 var executeOnce = (function () {
var executed = false;
return function (options) {
if (!executed) {
executed = true;
funB(options);
}
};
})();

关于javascript - 如何通过定义为函数的变量将对象名称作为参数传递给另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55584710/

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