在https://dev.twitter.com/docs/embedded-timelines中,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>
为什么脚本使用闭包而不是仅仅采用更简单的方式?
<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>
答案 0 :(得分:1)
函数范围为您提供局部变量。
如果没有该功能,父页面范围将会混杂使用d
,s
,id
,js
,fjs
等符号。
也许其他人正在使用那些。
实际上,这不是一个闭包,恰恰相反:闭包是一个捕获其父作用域部分的函数。他们似乎特别注意而不是来做这件事,只是引用函数参数,甚至不是来自父作用域的document
。