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