【问题标题】:What is this syntax? ; (function ($, undefined) [duplicate]这是什么语法? ; (函数($,未定义)[重复]
【发布时间】:2013-04-12 20:51:12
【问题描述】:
; (function ($, undefined)
{

    // all the variables and functions of the js document

})(jQuery);

我已经在 jquery/javascript 文件中看到过两次缩放脚本。我不明白这到底是什么。我似乎无法谷歌它,我不记得在最近学习 jquery 和 js 时在 tizag 或 w3schools 上遇到过这个。

在这段代码之前或之后没有任何内容(除了一些 cmets)。所以我完全不知道(function())(jQuery); 是什么或做什么。

【问题讨论】:

标签: javascript jquery


【解决方案1】:

这是一种确保$ 确实是jQuery 对象并确保任何局部变量和方法都是私有作用域的方法,即不污染全局命名空间。

它是一个自调用匿名函数,传递的参数是jQuery,意味着$将是jQuery对象。

在函数内部声明意味着内部变量和方法在函数外部不可见。

【讨论】:

  • 另外 - 开头的分号只是一种安全措施,以防在没有正确格式的情况下将此代码包含在其他一些 JS 之后。
【解决方案2】:
(function ($, undefined)
{

    // all the variables and functions of the js document

})(jQuery);

调用一段代码确保里面

  • $ 可用于引用jQuery
  • undefinedundefined (编辑:这很有用,因为 undefined 在当时可以在最旧的浏览器中重新定义,现在没用了)

并且任何缩小器都可以将undefined 更改为更短的标签。

最初的; 确保您可以将此文件与另一个文件连接:如果没有此文件,如果之前的文件类似于

,则执行连接文件时会出错
(function (){

})()

【讨论】:

  • “未定义未定义”。为什么需要这样做?
  • @CodePanda 你不再需要它了。回到过去,undefined 可以重新定义,而 jQuery 想要确保它是“正确的”未定义的。这个答案可以追溯到 2013 年,我会稍微更新一下。另见stackoverflow.com/questions/8783510/…
猜你喜欢
  • 2013-07-15
  • 2018-01-22
  • 1970-01-01
  • 2011-03-02
  • 2016-12-18
  • 2011-10-10
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多