Javascript 为什么twitter的嵌入方法使用闭包?

Javascript 为什么twitter的嵌入方法使用闭包?,javascript,twitter,closures,Javascript,Twitter,Closures,在中,twitter解释说,要嵌入时间线,必须在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];

在中,twitter解释说,要嵌入时间线,必须在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>

!函数(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);}(文档,“脚本”,“twitter wjs”);
为什么脚本要使用闭包,而不是用一种更简单的方法

<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>
var d=document,s=“script”,id=“twitter wjs”;var js,fjs=d.getElementsByTagName[0];如果(!d.getElementById(id)){js=d.createElement;js.id=id;js.src=“//platform.twitter.com/widgets.js”;fjs.parentNode.insertBefore(js,fjs);};

函数作用域为您提供局部变量

如果没有该功能,父页面范围将充满符号,如
d
s
id
js
fjs

也许是别的什么东西在用这些

实际上,这不是一个闭包,恰恰相反:闭包是一个捕获其父作用域部分的函数。他们似乎特别注意不要这样做,只参考函数参数,甚至不参考父范围中的
文档