Uglify.js在if语句中搞砸了

时间:2019-10-07 15:23:46

标签: javascript uglifyjs

我有这个代码

if (!win._hb_bids) {
    win._hb_bids = {};
}
win._hb_bids.hb_auction_id = helpers.generateCacheBuster();
if (config.isAmazon) {

通过Uglify.js转换为此代码

if ((p._hb_bids = p._hb_bids || {}) && (p._hb_bids.hb_auction_id = e.default.generateCacheBuster()), s.isAmazon)

我假设应该从左到右执行此代码,并将_hb_bids属性设置为一个空对象。取而代之的是,我在Chrome调试器中看到的是,首先执行了generateCacheBuster(),然后尝试为p._hb_bids.hb_auction_id进行赋值,此时p._hb_bidsundefined

enter image description here

执行顺序如此奇怪的原因是什么?丑化后如何将代码重写为正确工作?

更新: 我找到了问题的原因。我还有另一部分代码用于iframe内容刷新,而win变量指向已被破坏的iframe窗口。这可能导致了这种奇怪的行为。因此,这并不是我最初想到并在标题中所述的uglify.js问题。

0 个答案:

没有答案