gpt4 book ai didi

javascript - Uglify 打破渐进式嵌套对象创建

转载 作者:行者123 更新时间:2023-11-28 05:29:27 26 4
gpt4 key购买 nike

我正在逐步创建嵌套对象。原来的代码可以工作,但是丑化后的代码不行。

工作原始代码

function(type, id, fieldName) {
if (!this.model.proposed_changes)
this.model.proposed_changes = {};
if (!this.model.proposed_changes[type])
this.model.proposed_changes[type] = {};
if (!this.model.proposed_changes[type][id])
this.model.proposed_changes[type][id] = {};
if (fieldName) {
this.model.proposed_changes[type][id][fieldName] = this.model.proposed_changes[type][id][fieldName] || {};
}
}

丑化代码(添加换行符以提高可读性)

function(e, i, n) {
this.model.proposed_changes || (this.model.proposed_changes = {}),
this.model.proposed_changes[e] || (this.model.proposed_changes[e] = {}),
this.model.proposed_changes[e][i] || (this.model.proposed_changes[e][i] = {}),
n && (this.model.proposed_changes[e][i][n] = this.model.proposed_changes[e][i][n] || {})
}

这个丑陋的函数在 this.model.proposed_changes 时出错。是 undefinedCannot read property <ID passed in> of undefined 。我不确定为什么丑化的代码不起作用,但似乎分配没有按顺序运行,即使它们应该是( https://msdn.microsoft.com/en-us/library/9b37css7(v=vs.94).aspx )

我正在将 gulp-uglify 与其他配置一起使用,而不是保持许可证完好无损,尽管我已经尝试过 mangle: false没有效果。

假设这就是问题所在,是否有某种方法可以强制 uglify 确保分配按顺序发生?

背景

在我的示例中,我保证 this.model 存在,但不保证它有一个名为 suggest_changes 的子对象。这种模式一直持续到我有 this.model.propose_changes[type][id][fieldName]。如果有更好的方法来做到这一点,我当然会感兴趣。

最佳答案

生产后端错误地将 this.model.propose_changes 初始化为 '{}' 而不是 {}。一旦修复了该错误,代码就会按预期工作。

关于javascript - Uglify 打破渐进式嵌套对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com