首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

初学者求解。不论高手低手,能回答有关问题的都是好手

2012-03-09 
菜鸟求解。。不论高手低手,能回答问题的都是好手!js包中的代码:(function( window, undefined ) {...})(wind

菜鸟求解。。不论高手低手,能回答问题的都是好手!
js包中的代码:
(function( window, undefined ) {
...
})(window);
又如:
(function( $, undefined ) {
...
}(jQuery));
继续如:
(function( $, undefined ) {
...
})(jQuery);
我的问题是:
为什么可以在function(){...}外面加一个括号,前者function外的(window)是什么意思?
后者紧随function的(jQuery)是什么意思?它们都代表了什么?
为什么(window)是写在外面,而(jQuery)是写在function的同一个括号里?第三个的(jQuery)又是写在外面的,(window)和(jQuery)有什么区别?,求解啊,不懂啊。

[解决办法]

(function(){
 
}) ();

这样写定义并立即调用了一个匿名函数

(function(undefined ){

}) (window);

这样写 undifined作为匿名函数的参数,window作为调用匿名函数运行的参数

这样写就是把window对象作为匿名函数的参数,并立即执行

(function(){

}) (window);
[解决办法]
(function( window, undefined ) {
...
})(window);

=

function fun(w,u){
..
}

fun(window);

[解决办法]

JScript code
var undefined = 1;alert(undefined);(function( window, undefined ) {alert(undefined);})(window);(function( window ) {alert(undefined);})(window);
[解决办法]
(function( $, undefined ) {
...
})(jQuery);

后者紧随function的(jQuery)是什么意思?它们都代表了什么?
jQuery是写好的框架的名称,但是在这儿是一个新建好的jQuery对象,看他的jquery.1.1源码,或许能明白一些。
JScript code
    var jQuery = function (a, c) {        // If the context is global, return a new object        if (window == this)            return new jQuery(a, c);        // Make sure that a selection was provided        a = a || document;        // HANDLE: $(function)        // Shortcut for document ready        // Safari reports typeof on DOM NodeLists as a function        if (jQuery.isFunction(a) && !a.nodeType && a[0] == undefined)            return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ](a);        // Handle HTML strings        if (typeof a == "string") {            var m = /^[^<]*(<.+>)[^>]*$/.exec(a);            a = m ?                // HANDLE: $(html) -> $(array)                jQuery.clean([ m[1] ]) :                // HANDLE: $(expr)                jQuery.find(a, c);        }        return this.setArray(            // HANDLE: $(array)            a.constructor == Array && a ||                // HANDLE: $(arraylike)                // Watch for when an array-like object is passed as the selector                (a.jquery || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType) && jQuery.makeArray(a) ||                // HANDLE: $(*)                [ a ]);    };    // 主要看这段:if (window == this)            return new jQuery(a, c); 

热点排行