Dollar sign before self declaring anonymous function in JavaScript?
这两者有什么区别:
1 2 3 | $(function () { // do stuff }); |
和
1 2 3 | (function () { // do stuff })(); |
首先使用jquery将函数绑定到
1 2 3 | $(document).ready(function() { /* Handler for .ready() called. */ }); |
而
一个是jquery
它们都是匿名函数,但立即调用
jquery的工作方式类似于这样。
1 2 3 4 5 6 7 | window.jQuery = window.$ = function(arg) { if (typeof arg == 'function') { // call arg() when document is ready } else { // do other magics } } |
所以您只需要调用jquery函数并传递一个函数,这个函数将在文档就绪时被调用。
"自动执行匿名函数"与执行此操作相同。
1 2 3 4 | function a(){ // do stuff } a(); |
唯一的区别是您没有污染全局命名空间。
1 2 3 | $(function () { // It will invoked after document is ready }); |
一旦文档准备就绪,这个函数的执行意味着整个HTML应该在执行之前加载,但在第二种情况下,函数在创建后立即调用。
1 2 3 | (function () { // It will invoked instantly after it is created })(); |