Подтвердить что ты не робот

Неясные вложенные "с" утверждениями

Я просматриваю проект для сторонних разработчиков, и есть действительно странный блок кода Javascript прямо вверху каждой страницы. Очевидно, что он ничего не делает, но это так странно, что я не могу не задаться вопросом, как капитал F 'стал:

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

Если мне не хватает чего-то, на разработчика должен повлиять какой-то амфетамин, чтобы произвести это самостоятельно, поэтому я предполагаю, что это остается автоматическим инструментом, но не может для меня жизни Представьте себе полезный сценарий.

Может ли кто-нибудь пролить свет на это? Кто-нибудь сталкивался с чем-то похожим?


Это абсолютно положительно все, за исключением открытого тега <script> от байта нуля в документе. Как уже было сказано, я знаю, что он ничего не делает - даже если выражение было выполнено this, было бы window или global, у которого не было бы числовых индексов, чтобы он терпел неудачу в первой строке.

Я знаю, что with как концепция оставляет желать лучшего, и в качестве практической шутки это не смешно. Я оставлю вопрос открытым - может быть, какая-то обезьяна в шкафу где-то знает что-то об этом.

4b9b3361

Ответ 1

Это может быть интересно... похоже, это отладчик. Какой отладчик я не знаю, и почему он добавил бы такой нечетный код:

Почему эта функция отменена?

Возможно, вы могли бы спросить Скотта Северанса?

Все, что было сказано, я лично предпочел бы термин ape-подобный потомок...

Обратите внимание: Этот вопрос определенно довольно случайный, но мне особенно нравится тот факт, что (по крайней мере, частично) ответ был найден уже существующим на StackOverflow...?! Есть ли что-то, на что у SO нет ответа, он становится похожим на тех людей, которые никогда не любят признавать, что они ничего не знают!

Ответ 2

В соответствии с [MDN] [1] оператор with используется для включения объекта в операторы внутри. Забастовкa >
Я просто наткнулся на аналогичный код в Chrome.
Я допустил ошибку при использовании ключевого слова "in" в качестве объекта var/, и он заменил мой код на вложенные "с", он заменил код только в файле источников инструментов dev.
Так что из отладчика, операторы WITH, вероятно, использовались в своем коде для организации иерархии JS, он встретил "in" и не нашел ничего, чтобы что-то найти. Я отказался от файла (я тестировал SSE и... не удалось), поэтому теперь я пытаюсь воссоздать ошибку.