2014-02-07 1 views
11

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

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

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

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


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

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

+2

Остатки минитрактора? – j08691

+2

Это весь код или есть еще больше? –

+1

Использование инструкции with не рекомендуется – Satpal

ответ

0

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

+1

Ну, спасибо за участие ... но мой вопрос не был * «что значит« с »означает?» * - Меня интересует, какой рефлексивный, возможно, самовоспроизводимый алгоритм оставил эту мерзость в верхней части документ и то, что он пытался выполнить в течение своего жизненного цикла. – Emissary

2

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

Why is this function being undone?

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

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

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

Смежные вопросы