Почему метод встраивания твиттера использует замыкание?

В https://dev.twitter.com/docs/embedded-timelines твиттер объясняет что для встраивания временной шкалы вы должны добавить эти две строки в свой html:

<a class="twitter-timeline" href="https://twitter.com/twitterapi" data-widget-id="YOUR-WIDGET-ID-HERE">Tweets by @twitterapi</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

Почему скрипт использует замыкание, а не делает это более простым способом?

<script>var d=document,s="script",id="twitter-wjs";var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);};</script>

person JulienFr    schedule 11.04.2014    source источник


Ответы (1)


Области функций дают вам локальные переменные.

Без этой функции область действия родительской страницы была бы загромождена такими символами, как d, s, id, js, fjs.

Может быть, кто-то еще использовал их.

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

person Thilo    schedule 11.04.2014