我正在尝试使用另一个值(数组)作为参数将对象值设置为函数调用,但是,由于某种原因该值返回为未定义,然后我尝试在此之后立即访问该值。它位于 IIFE 内部。
我不确定为什么会发生这种情况,因为据我所知,范围界定没问题,并且该值应该在那时初始化并执行?
这是一个简化的示例:
(function(){
var minefield = [1,2,3,'M',4,5,6];
function findMachine(minefieldMachine) {
return minefieldMachine === 'M';
}
var terrain = {
start:{initialMachienLocation:minefield.findIndex(findMachine)},
currentMutable:{mutableIndex:terrain.start.initialMachineLocation}//Error: "Uncaught type error cannot read property 'start' of undefined"
//Why isn't the above accessing the value declared in terrain.start.initialMachineLocation through the function call?
}
}());
但是,这样做是可行的,脱离了上面的上下文:
function findMachine(minefield){return minefield === 'M'}
[1,2,3,'M',4,5,6].findIndex(findMachine);
//above returns the proper index value, 3.
最佳答案
这与功能无关。
您试图做的本质上是:
var foo = {
a: 1,
b: foo.a
}
您需要考虑操作的顺序。
对象字面量构造一个对象,然后分配给变量foo
。
...除了在构造对象时,您正在尝试读取foo
的值。它还没有,所以失败了。
您需要分两步完成此操作。
var foo = {
a: 1,
}
foo.b = foo.a;
关于javascript - 通过 IIFE 内的嵌套对象访问函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47337171/