模糊嵌套的“with”语句

时间:2014-02-07 21:56:42

标签: javascript

我正在为一位朋友审核一个外包项目,并且每页顶部都有一个非常奇怪的Javascript代码块。 显然它没有做任何事情但它是如此似乎我不禁想知道资本F'是如何形成的:

(function() {
    with (this[2]) {
        with (this[1]) {
            with (this[0]) {
               return function(event) {};
            }
        }
    }
})

除非我遗漏某些东西,否则开发人员必须受到某种安非他明的影响才能自行生成,所以我假设它是自动化工具的遗骸而不能用于我的生活想象一个有用的场景。

有人可以对此有所了解吗?有没有人遇到类似的东西?


这绝对是 所有内容 ,但文档中字节为零的开始<script>标记除外。正如已经说明的那样,我知道它没有做任何事情 - 即使表达式 已执行thiswindowglobal也不会t有任何数字索引,所以它在第一行失败。

我知道with作为一个概念还有很多不足之处,作为一个恶作剧,这并不好笑。我会把这个问题保持开放 - 也许某个地方的某个猴子知道它的某些东西。

2 个答案:

答案 0 :(得分:2)

这可能是有意义的...它似乎来自调试器。我不知道哪个调试器,也没有为什么会添加这样奇怪的代码:

Why is this function being undone?

也许你可以问Scott Severance?

所有这一切,我个人更喜欢猿类后代这个词...

  

请注意:这个问题肯定是随机的,但我特别喜欢在StackOverflow上已经存在(至少部分)答案的事实......?!有没有什么东西没有得到答案,它就像那些从不喜欢承认他们不知道的人一样!

答案 1 :(得分:0)

根据[MDN] [1],with语句用于将一个对象包含在语句中。
我只是偶然发现了Chrome中的类似代码 我错误地使用“in”关键字作为var / object,它将我的代码替换为嵌套的“withs”,它仅在dev工具源文件中替换了代码。
所以它来自一个调试器,with语句可能在其代码中用于组织JS的层次结构,它遇到了“in”并且没有找到任何东西。 我放弃了文件(我正在测试SSE并且......失败了)所以我现在正在尝试重新创建错误。