Javascript 通过IIFE中的嵌套对象访问函数返回值
我试图使用另一个值(数组)作为其参数为函数调用设置一个对象值,但是,由于某些原因,该值返回为未定义,然后我尝试访问该值。这是一种生活 我不确定为什么会发生这种情况,因为据我所知,范围界定是可以的,并且该值应该在那时初始化并执行 下面是一个简化的示例:Javascript 通过IIFE中的嵌套对象访问函数返回值,javascript,arrays,oop,Javascript,Arrays,Oop,我试图使用另一个值(数组)作为其参数为函数调用设置一个对象值,但是,由于某些原因,该值返回为未定义,然后我尝试访问该值。这是一种生活 我不确定为什么会发生这种情况,因为据我所知,范围界定是可以的,并且该值应该在那时初始化并执行 下面是一个简化的示例: (function(){ var minefield = [1,2,3,'M',4,5,6]; function findMachine(minefieldMachine) { return minefieldMachine === 'M'
(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;
这与函数无关 您试图做的基本上是:
var foo = {
a: 1,
b: foo.a
}
你需要考虑操作的顺序。
对象文本构造一个对象,该对象被分配给变量foo
…除了在构造对象时,您试图读取foo
的值。它还没有,所以它失败了
您需要分两步完成此操作
var foo = {
a: 1,
}
foo.b = foo.a;
您无法访问内部的任何函数或变量,似乎是私有的…您无法访问内部的任何函数或变量,似乎是私有的。。。