我有这个代码
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_bids
是undefined
。>
执行顺序如此奇怪的原因是什么?丑化后如何将代码重写为正确工作?
更新:
我找到了问题的原因。我还有另一部分代码用于iframe内容刷新,而win
变量指向已被破坏的iframe窗口。这可能导致了这种奇怪的行为。因此,这并不是我最初想到并在标题中所述的uglify.js问题。