Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不使用javascript自执行函数而不是jQuery';s_Jquery - Fatal编程技术网

为什么不使用javascript自执行函数而不是jQuery';s

为什么不使用javascript自执行函数而不是jQuery';s,jquery,Jquery,我目前正在学习jQuery并学习许多教程,几乎所有的教程都使用(function(){}();而不是(function($){}(jQuery);我知道它们的目的是不创建全局变量。问题是我注意到我仍然可以在javascript自执行函数中使用jQuery对象,但我不能以另一种方式使用它们。那么我为什么要使用jQuery的self-exe funct呢?前提是:使用$而不是jQuery 因此,$是更详细的jQuery的简单快捷方式 但是,$也用于其他库,或者也可以在项目的其他部分用作简单变量。 为

我目前正在学习jQuery并学习许多教程,几乎所有的教程都使用(function(){}();而不是(function($){}(jQuery);我知道它们的目的是不创建全局变量。问题是我注意到我仍然可以在javascript自执行函数中使用jQuery对象,但我不能以另一种方式使用它们。那么我为什么要使用jQuery的self-exe funct呢?

前提是:使用
$
而不是
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()
,因为它的
$
速记可能与其他库冲突。)