Mengapa metode penyematan twitter menggunakan penutupan?

Di https://dev.twitter.com/docs/embedded-timelines , twitter menjelaskan bahwa untuk menyematkan garis waktu, Anda harus menambahkan dua baris ini ke html Anda:

<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>

Mengapa skrip menggunakan penutupan alih-alih melakukannya dengan cara yang lebih sederhana?

<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 sumber


Jawaban (1)


Cakupan fungsi memberi Anda variabel lokal.

Tanpa fungsi tersebut, cakupan halaman induk akan dipenuhi dengan simbol seperti d, s, id, js, fjs.

Mungkin ada orang lain yang menggunakannya.

Sebenarnya, ini bukan sebuah penutupan, justru sebaliknya: Penutupan adalah fungsi yang menangkap bagian dari lingkup induknya. Mereka tampaknya sangat berhati-hati tidak melakukan itu, hanya mengacu pada parameter fungsi, bahkan tidak ke document dari lingkup induk.

person Thilo    schedule 11.04.2014