什么是JavaScript代码的例子,其语义会因缩小而改变?

Dyl*_*tie 7 javascript minify cellular-network

我有报告 - 没有可用的源,我担心 - 一个Web应用程序无法在使用某些移动数据网络的设备上运行,因为网络运营商正在运行一个非透明的代理,它正在压缩图像并缩小JavaScript,以及缩小实际上是打破了代码.

我很好奇是否有人有一个例子(即代码片段和缩小技术),其中草率的JS代码与积极的缩小相结合实际上可能会改变代码的含义?我怀疑这样的组合是可能的,但无法想到 - 或找到 - 任何例子.任何人都有一个很好的例子,或相反的证据?

Nza*_*all 6

考虑以下代码:

function DoStuff(thingA, ThingB){
    var thingC = thingA + ThingB;
    return thingC;
}

var stuffingC = eval("DoStuff(stuffingA, stuffingB)");
Run Code Online (Sandbox Code Playgroud)

minifiers有时会缩短变量或函数名称:

function DS(A, B){return A+B;}

var C= eval("DoStuff(stuffingA, stuffingB)");
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您的代码将会中断,因为eval'd字符串未更改为考虑更改的函数名称.

这是一个基本的例子,但通常会发生这种情况:你对字符串变量进行某种反思或评估,该变量引用具有缩小前名称的缩小代码片段,但不会更改为对此缩小的说明性质.