Javascript 阻止从Google闭包编译器更改某些字符串?

Javascript 阻止从Google闭包编译器更改某些字符串?,javascript,google-closure-compiler,Javascript,Google Closure Compiler,有以下代码: var a = 'Start'; var b = ' here'; return (document.querySelectorAll + "").toString().toLowerCase().indexOf(a + b) == -1; 在Google Closure编译器之后,此代码将: return (document.querySelectorAll + "").toString().toLowerCase().indexOf('Start here') == -1;

有以下代码:

var a = 'Start';
var b = ' here';
return (document.querySelectorAll + "").toString().toLowerCase().indexOf(a + b) == -1;
在Google Closure编译器之后,此代码将:

return (document.querySelectorAll + "").toString().toLowerCase().indexOf('Start here') == -1;
如何防止更改此字符串,因为我不需要在“Start here”的indexOf参数中输入,这一点非常重要,它正好是“a+b”? 我是否在此代码上方有特定的键来解释GCC不编译此代码/字符串?

您可以使用以下键:

表示优化不应内联的函数或变量

要同时保留
a
b
,请使用:

function x() {
  /** @noinline */
  var a = 'Start';
  /** @noinline */
  var b = ' here';
  return (document.querySelectorAll + "").toString().toLowerCase().indexOf(a + b) == -1;
}
结果:

function x(){var a="Start",b=" here";return-1==(document.querySelectorAll+"").toString().toLowerCase().indexOf(a+b)};


(请注意,由于
document.querySelectorAll+”
的计算结果已经是一个字符串,因此无需再次调用
toString
,如果需要,可以将该部分去掉)

如果您希望indexOf的参数是字符串
a+b
,那么为什么不在
indexOf
中使用
'a+b'
而不是
a+b
?因为我需要我的代码没有被某些系统解析。他们用正则表达式阻塞了我的代码,我什么都做不了我需要把“从这里开始”改为“开始”+“这里”。但编译器返回给我以前的值@NickParsons