javascript - 如果传递带有属性内属性的对象,则 IIFE Javascript 错误

标签 javascript

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/

相关文章:

javascript - 在 Javascript 中反对前导逗号的客观原因

javascript - 无法从 JQUERY 将 JSON 数据发送到 python

javascript - 无法在 Gmail 中找到元素

javascript - 使用 Highcharts 调整热图大小后更新数据标签位置

javascript - 如何以 HH MM 的形式腾出时间并能够使用它? (javascript)

javascript - VSCode 问题 : Vue example doesn't work in Firefox/Chrome, 但它可以在 jsfiddle 中使用

javascript - Electron/Linux : Give fullscreen back to previous application

javascript - 页面提交后图表消失

javascript - "Same web property ID is tracked twice."——谷歌分析

javascript - 将多个视频返回到海报照片