В моем расширенном коде я получаю 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)