var globalVar = globalVar || {};
globalVar.object1 = {};
globalVar.object1.object2 = { a: "hello" }
(function(x){
x.hello = 'its me';
}(globalVar.object1.object2));
为什么我不能将 globalVar.object1.object2 作为对象传递给 var x?它返回一个错误
VM3167:5 未捕获类型错误:无法设置未定义的属性“hello”
最佳答案
这是因为 IIFE 前面少了分号。
因此,IIFE 的外括号被视为尾随对象文字的函数调用,但这不会导致错误,因为首先会评估调用的参数。本例中的参数将是调用 IIFE 的结果,这意味着您尝试在分配给 .object2
的表达式完成之前将 .object2
传递给 IIFE完整的,这意味着 .object2
尚不存在。
关于javascript - 如果传递带有属性内属性的对象,则 IIFE Javascript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43816309/