$(document).ready(function()与$(document).ready(function($)

时间:2016-02-23 02:34:01

标签: jquery

我一直在使用Iphone 6和6S,发现第一种方式只适用于6S,而第二种方式适用于两者。 (两者都使用IOS 9.2.1)有人可以解释之间的区别:

$(document).ready(function()

$(document).ready(function($)

1 个答案:

答案 0 :(得分:1)

$(document).ready(function() {
   console.assert(jQuery == arguments[0] , 'my first param is jquery object')
     console.assert(this == document , 'my this is document')
       
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

除了命名第一个参数之外没有区别,请尝试:

 $(document).ready(function($) {
     console.log(arguments)

 $(document).ready(function() {
   console.log(arguments)
 })

Javascript没有基于参数的方法重载。

更新:无论你传递的匿名(或者为什么命名函数)定义,jquery都会将你的函数称为:

  func.apply(document, jquery)

参见来源:https://github.com/jquery/jquery/blob/99e8ff1baa7ae341e94bb89c3e84570c7c3ad9ea/src/callbacks.js#L80

所以你的第一个论点是,你将它命名为$或者不是jquery对象,而你的this将是document