【问题标题】:Why the embedding method of twitter does use a closure?为什么 twitter 的嵌入方法确实使用了闭包?
【发布时间】:2014-04-11 18:21:25
【问题描述】:

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>

【问题讨论】:

    标签: javascript twitter closures


    【解决方案1】:

    函数范围为您提​​供局部变量。

    如果没有该函数,父页面范围将被dsidjsfjs 等符号弄乱。

    也许其他东西正在使用它们。

    实际上,这不是闭包,恰恰相反:闭包是一个捕获其父作用域部分的函数。他们似乎格外小心这样做,只引用函数参数,甚至不引用父作用域中的document

    【讨论】:

      猜你喜欢
      • 2022-09-30
      • 2021-09-02
      • 2010-10-23
      • 1970-01-01
      • 2020-12-16
      • 2013-01-12
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多