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未捕获的TypeError:无法设置未定义的属性“ hello”
最佳答案
这是因为IIFE之前缺少分号。
因此,将IIFE的外部paren视为从对象字面量开始的函数调用,但这不会导致错误,因为该调用的args首先被求值。在这种情况下,该参数将是调用IIFE的结果,这意味着您要尝试在分配给.object2
的表达式完全完成之前将.object2
传递给IIFE,这意味着.object2
尚未存在。