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

时间:2018-08-30 05:46:48

标签: javascript minify uglifyjs

我有一个js文件,其中包含一个对象数组。

testsripts.js

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

当我使用uglifier缩小此文件时,得到的结果如下所示。

testsripts.min.js

t.message;

如何解决这个问题。

(以上脚本为简化起见已缩短)

2 个答案:

答案 0 :(得分:0)

尝试单独分配对象的值。

替换

[
   {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);

答案 1 :(得分:0)

所有您所拥有的数组的引用不会保存在任何地方。因此,UglifyJS不会创建立即垃圾收集的数组,而是会评估您的代码是否可能产生副作用,并最小化您的代码,以使具有副作用的表达式运行(其余的表达式将被丢弃)。

text属性只有一个纯字符串文字作为值,它不可能有任何副作用,因此将其丢弃。 action的值为t.message,如果message是吸气剂,则可能会引起副作用。因此,缩小的结果仅为t.message;,而没有其他内容。

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

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

输出,您可以测试here

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