4
回答
jQuery中的已运行疑惑
华为云数据库免费试用   

今天在看jquery 的源代码的时候发现jquery中的一段代码


var jQuery = (function() {
    var jQuery = function( selector, context ) {
        return new jQuery.fn.init( selector, context, rootjQuery );
    }     return jQuery;
})();

这段代码中谁能该仔细讲讲是个什么意思,这样写和

var jQuery = function( selector, context ) {
        return new jQuery.fn.init( selector, context, rootjQuery );
 }



有什么区别吗?




举报
远在南非
发帖于3年前 4回/128阅
共有4个答案 最后回答: 3年前
看错了吧 jquery 现在的源码里面 就是下面这种啊
var
	// Use the correct document accordingly with window argument (sandbox)
	document = window.document,

	version = "2.1.4",

	// Define a local copy of jQuery
	jQuery = function( selector, context ) {
		// The jQuery object is actually just the init constructor 'enhanced'
		// Need init if jQuery is called (just allow error to be thrown if not included)
		return new jQuery.fn.init( selector, context );
	},

	// Support: Android<4.1
	// Make sure we trim BOM and NBSP
	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,

	// Matches dashed string for camelizing
	rmsPrefix = /^-ms-/,
	rdashAlpha = /-([\da-z])/gi,

	// Used by jQuery.camelCase as callback to replace()
	fcamelCase = function( all, letter ) {
		return letter.toUpperCase();
	};
--- 共有 2 条评论 ---
游走的鱼https://github.com/jquery/jquery/blob/1.7/src/core.js https://github.com/jquery/jquery/blob/2.1.4/src/core.js 3年前 回复
boystudio再往上一层还有个闭包,然后在最后面还有个return jQuery; 是你没有把代码看完,只看到这一段。 3年前 回复

返回的结果是一样的,但第一段代码用的是闭包,可以在一些场景中避免一些错误,请参考js闭包知识。

顶部