如何解决JS对象数组缩小问题?



我有一个包含一组对象的js文件。

测试里普茨.js

[
{action: t.message, text: ' ==== Test form insertions === nInserting forms.... n'}
]

当我使用丑陋程序缩小此文件时,我得到的结果如下。

testripts.min.js

t.message;

如何解决这个问题。

(以上脚本为简化(

尝试单独为对象赋值。

取代

[
{action: t.message, text: ' ==== Test form insertions === nInserting forms.... n'}
]

var myarray=[];
var obj={};
obj.action=t.message;
obj.text=" ==== Test form insertions === nInserting forms.... n";
myarray.push(obj);

你所拥有的只是一个数组,它的引用没有保存在任何地方。因此,UglifyJS 不会创建一个会立即被垃圾回收的数组,而是评估您的代码是否存在可能的副作用,并缩小您的代码,以便运行具有副作用的表达式(其余的被丢弃(。

text属性只有一个纯字符串文本作为值,不可能有任何副作用,因此将其丢弃。action的值是t.message,如果message是getter,可能会导致副作用。因此,缩小的结果只是t.message;,没有别的。

一种选择是声明一个变量,以确保保存数组引用:

const arr = [
{action: t.message, text: ' ==== Test form insertions === nInserting forms.... n'}
];

输出,你可以在这里测试:

const arr=[{action:t.message,text:" ==== Test form insertions === nInserting forms.... n"}];

最新更新