javascript - 通过 IIFE 内的嵌套对象访问函数返回值

标签 javascript arrays oop

我正在尝试使用另一个值(数组)作为参数将对象值设置为函数调用,但是,由于某种原因该值返回为未定义,然后我尝试在此之后立即访问该值。它位于 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/

相关文章:

javascript - Uint8Array 的数组连接,芯片和引脚设备的输出

JavaScript 嵌套 for 循环向对象添加值

java - 处理语言: Get inner array values from ArrayList()

java - 具有默认级别访问权限的类内部公共(public)方法有什么用?

c# - .net 中的垃圾收集最佳实践

javascript - 创建嵌套 ES6 类的高效而优雅的方法?

javascript - 正则表达式正在接受带有符号的单词

javascript - 来自javascript的换行符/样式文本?

javascript - div 动态创建,但图像不会附加到其上

javascript - 是否有可能使 Assets http 可获取作为 Jest 测试的一部分