我正在使用gulp-uglify〜1.5.4进行javascript压缩,在文件中包含以下代码:columns[j].colDef.cellRenderer.name === 'dateRenderer'cellRenderer是一个函数,因此cellRenderer.name将返回该函数的名称。
因此,当函数为dateRenderer()时,该代码应返回true,这不会发生,因为在缩小之后,该函数被弄乱了。

我找到了这个线程:Make gulp-uglify not mangle only one variable,但是我不想告诉uglify要修改哪些变量,而不是,没有其他方法可以解决这个问题吗?像在AngularJS中一样,我们使用$ inject服务。

最佳答案

如果不想指定给uglifyjs,它应该从处理中跳过什么函数名,请将该函数名存储为字符串。



function dateRenderer() {
  // do something useful
}

dateRenderer.rendererName = 'dateRenderer'

// later ...
var fn = dateRenderer

if (fn.rendererName === 'dateRenderer') {
  console.log('ok!')
}





...或在调用该特定函数后设置其名称:



function dateRenderer() {
  dateRenderer.rendererName = 'dateRenderer'

  // do something useful
}

// later ...
var fn = dateRenderer

// do something
dateRenderer()

if (fn.rendererName === 'dateRenderer') {
  console.log('ok!')
}

10-07 17:00