JavaScript setTimeout无限循环,不带递归

cli*_*ait -16 javascript stack-overflow obfuscation jquery settimeout

我不能使用Obfuscator.io来uglify我的JS脚本,因为它包含一个setTimeout调用自身的函数.
MCVE:

function repeater() {
    // DO SOME STUFF...
    setTimeout(repeater, 100);
}
repeater();
Run Code Online (Sandbox Code Playgroud)

重现所需的自定义模糊处理设置:
- 标识符名称生成器:Mangled
- 保留名称:$- jQuery

Obfuscator.io的错误消息:

错误:类t中的@postConstruct错误:类t中的@postConstruct错误:超出了最大调用堆栈大小

我已经阅读了其他一些Stack Overflow问题.据我所知,调用setTimeout(func)里面func实际的递归.

但是,Obfuscator.io的算法仍然无法处理自我调用的setTimeout延迟.

如何在setTimeout不在函数本身中调用它的情况下使用重复执行的函数?我不想使用,setInterval因为我想在函数代码运行后每次都开始延迟. setInterval忽略了这一点.

Geo*_*rge 7

我认为你的问题实际上是在使用中

  • 保留名称:$- jQuery

使用它作为配置导致此

在此输入图像描述

您正在获得的是什么,如果您将其更改^$为网站上的文本框和说明应该是什么,您的代码会混淆不错

在此输入图像描述

保留名称

禁用模糊处理和生成标识符,这些标识符与传递的RegExp模式匹配.

例如,如果添加^someName,混淆器将确保以someName开头的所有变量,函数名和函数参数都不会被破坏.

  • 或使用jQuery而不是$来避免这种混淆? (3认同)