到底是什么!function($){...}(window.jQuery)呢?

Arc*_*nic 2 javascript jquery

我想知道这里到底发生了什么.我知道什么$(document).ready(function() {...});以及何时生效.同样如此jQuery(function($) {...}.

但是这有什么用呢?

!function ($) {
  $(function(){
    var $window = $(window)
    //normal jquery stuff
  })
}(window.jQuery)
Run Code Online (Sandbox Code Playgroud)

加载jQuery时是否加载而不是文档"准备好"时加载?

Que*_*tin 8

它创建一个闭包,在该闭包中$赋值变量window.jQuery.

目的是允许将无信息命名的变量$用作快捷方式,jQuery而不会与大量其他库和自定义函数冲突,这些函数也$用作变量名.

  • 我通常做`(function(a,b){}(p1,p2))`,我猜``function(a,b){}(p1,p2)`只是更少的字符. (5认同)
  • @iblamefish - 您的评论听起来像`!`是可选的,可以安全地省略.`!`将函数*声明*转换为函数*表达式*.没有它你会得到一个运行时错误.我认为你的观点是,有多种方法可以做到,这当然是正确的.但是,说它只是一个"约定","不影响代码运行的方式"可能会令人困惑. (3认同)