Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过IIFE中的嵌套对象访问函数返回值_Javascript_Arrays_Oop - Fatal编程技术网

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;

您无法访问内部的任何函数或变量,似乎是私有的…您无法访问内部的任何函数或变量,似乎是私有的。。。