为什么不使用javascript自执行函数而不是jQuery';s
我目前正在学习jQuery并学习许多教程,几乎所有的教程都使用(function(){}();而不是(function($){}(jQuery);我知道它们的目的是不创建全局变量。问题是我注意到我仍然可以在javascript自执行函数中使用jQuery对象,但我不能以另一种方式使用它们。那么我为什么要使用jQuery的self-exe funct呢?前提是:使用为什么不使用javascript自执行函数而不是jQuery';s,jquery,Jquery,我目前正在学习jQuery并学习许多教程,几乎所有的教程都使用(function(){}();而不是(function($){}(jQuery);我知道它们的目的是不创建全局变量。问题是我注意到我仍然可以在javascript自执行函数中使用jQuery对象,但我不能以另一种方式使用它们。那么我为什么要使用jQuery的self-exe funct呢?前提是:使用$而不是jQuery 因此,$是更详细的jQuery的简单快捷方式 但是,$也用于其他库,或者也可以在项目的其他部分用作简单变量。 为
$
而不是jQuery
因此,$
是更详细的jQuery
的简单快捷方式
但是,$
也用于其他库,或者也可以在项目的其他部分用作简单变量。
为了确保将$
用作jQuery
,这是一个技巧,因为javascript必须首先获取作用域内变量的值,并且只有在没有全局作用域的情况下才获取全局作用域的值
例如:
// jQuery is loaded
console.log($ === jQuery) // true
window.$ = {thisIs:"myObject"};
console.log($ === jQuery); // false
(function($) {
console.log($ === jQuery); // true
})(jQuery);
不是为了“不创建全局变量”,而是为了不“使用”全局变量。创建全局变量是不可避免的。例如,
$
(即jQuery
)就是其中之一。关键是创建尽可能少的变量,然后只创建真正具有全局用途的变量,如库变量。(甚至jQuery也有.noConflict()
,因为它的$
速记可能与其他库冲突。)