`
gdpglc
  • 浏览: 90881 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

之前没看懂的js代码,今天看懂了

阅读更多
寓尔看过几眼jQuery插件的代码,发现这样的代码很是希奇:
(function($){

   js code...

})(jQuery);

从未深究,今天突然想明白了。

实际上,上边的代码就是一个js函数调用。

以下这部份

(function($){

   js code...

})

相当于是函数;

(jQuery) 则是函数调用时的参数列表。

以上代码等价于如下代码:

function test($){

   js code...

}

test(jQuery);


新手的盛宴!
分享到:
评论
19 楼 rainsilence 2011-06-18  
風一樣的男子 写道
又来闭包啊

macrotea 写道
谁能分别说说这四段代码的输出结果,并解析一下
(function(window, undefined){
	alert(undefined);
})(window);

1、undefined  undefined是保护变量啊
var undefined = 'myValue';
(function(window, undefined){
alert(undefined);
})(window);

2、undefined 还是保护变量
var undefined = 'myValue';
window.undefined = 'myValue_2';
(function(window){
alert(undefined);
alert(window.undefined);
})(window);

3、myValue_2  window 是保护变量啊
var undefined = 'myValue';
window.undefined = 'myValue_2';
(function(window, undefined){
alert(undefined);
})(window);

4、myValue

js 造诣低微,8知道对不


这里的undefined跟闭包毫无关系
18 楼 rainsilence 2011-06-18  
JavaStudyEye 写道
请问

如下代码的含义是啥啊?为啥要加undefined呢?

(function($, undefined){
   js code...
})(jQuery);


你看调用的时候只有一个参数对挖,第二个参数等于轮空了。这个参数就是未定义。但是老式的浏览器不存在undefined这个常量或者var undefined在函数前被定义了,造成了代码污染。所以放在这里等于用浏览器的特性来定义了一个常量。

function test(a) {
    alert(a);
}

test();

看看这个打印出来什么?
17 楼 風一樣的男子 2011-06-18  
又来闭包啊

macrotea 写道
谁能分别说说这四段代码的输出结果,并解析一下
(function(window, undefined){
	alert(undefined);
})(window);

1、undefined  undefined是保护变量啊
var undefined = 'myValue';
(function(window, undefined){
alert(undefined);
})(window);

2、undefined 还是保护变量
var undefined = 'myValue';
window.undefined = 'myValue_2';
(function(window){
alert(undefined);
alert(window.undefined);
})(window);

3、myValue_2  window 是保护变量啊
var undefined = 'myValue';
window.undefined = 'myValue_2';
(function(window, undefined){
alert(undefined);
})(window);

4、myValue

js 造诣低微,8知道对不
16 楼 macrotea 2011-06-18  
谁能分别说说这四段代码的输出结果,并解析一下


(function(window, undefined){
alert(undefined);
})(window);


var undefined = 'myValue';
(function(window, undefined){
alert(undefined);
})(window);

var undefined = 'myValue';
window.undefined = 'myValue_2';
(function(window){
alert(undefined);
alert(window.undefined);
})(window);


var undefined = 'myValue';
window.undefined = 'myValue_2';
(function(window, undefined){
alert(undefined);
})(window);
15 楼 zui4yi1 2011-06-18  
搜下匿名函数,就会明白了
14 楼 風一樣的男子 2011-06-17  
啊?我一直没看懂,是闭包吗?
13 楼 kyfxbl 2011-06-17  
还原到原生javascript,就是以下这行代码:

(function(param){})(param);

这叫“匿名函数立刻执行”,()()一个不能少
12 楼 JavaStudyEye 2011-06-17  
gdpglc 写道
JavaStudyEye 写道
请问

如下代码的含义是啥啊?为啥要加undefined呢?

(function($, undefined){
   js code...
})(jQuery);


经测试
<script>
(function(a,undefined){
  	  alert(a+" "+undefined);
  	})(1,2);
</script>


undefined是一个普通参数。


谢 楼主的回答啊,我现在恍然大悟了。原来是这个样子啊。
以前在网上找了篇文章,
http://www.fising.cn/2011/01/%e5%85%b3%e4%ba%8e-jquery-1-4-4-%e4%b8%ad-function-window-undefined-%e5%86%99%e6%b3%95%e7%9a%84%e5%8e%9f%e5%9b%a0%e8%ae%a8%e8%ae%ba.shtml
似懂非懂,现在是懂了。
11 楼 meepo3927 2011-06-17  
不错的哦~
10 楼 gdpglc 2011-06-17  
JavaStudyEye 写道
请问

如下代码的含义是啥啊?为啥要加undefined呢?

(function($, undefined){
   js code...
})(jQuery);


经测试
<script>
(function(a,undefined){
  	  alert(a+" "+undefined);
  	})(1,2);
</script>


undefined是一个普通参数。
9 楼 gdpglc 2011-06-17  
wangqingkeyi 写道
首先看jQ 的调用方式 $().jquery

$是jquery的别名,jquery 是一个函数,并且返回一个对象

$=jQuery=function(){
     return new jQuery.fn.init();
}

jQuery.fn=jQuery.prototype={
     init:function(){
          return this;
     },
     jquery:"1.3",
     size:function(){
          return this.length;
     },
     map:
     css:
     .....
}

jQuery.fn.init.prototype=jQuery.fn;//这是亮点

jQuery.extend=jQuery.fn.extend=function(){
}


能不能说的详细一些。jquery有大写的和小写的,看不明白你是不是指的一个东西。

亮点? 亮在哪里能不能说一下呀?



8 楼 JavaStudyEye 2011-06-17  
请问

如下代码的含义是啥啊?为啥要加undefined呢?

(function($, undefined){
   js code...
})(jQuery);
7 楼 wangqingkeyi 2011-06-17  
首先看jQ 的调用方式 $().jquery

$是jquery的别名,jquery 是一个函数,并且返回一个对象

$=jQuery=function(){
     return new jQuery.fn.init();
}

jQuery.fn=jQuery.prototype={
     init:function(){
          return this;
     },
     jquery:"1.3",
     size:function(){
          return this.length;
     },
     map:
     css:
     .....
}

jQuery.fn.init.prototype=jQuery.fn;//这是亮点

jQuery.extend=jQuery.fn.extend=function(){
}
6 楼 hamsterxd 2011-06-17  
路过,恭喜
另推荐O'Reilly出版的JavaScript: The Definitive Guide
手册性质的书籍,不过应该对你有帮助。
5 楼 www-hello 2011-06-17  
immediate function
小例子:
(function () {
alert('watch out!');
}());
4 楼 nzx1103 2011-06-17  
新手受教了,帮助很大
3 楼 洁宝儿 2011-06-17  
我是jQuery初学者,对我还是有很大帮助的
2 楼 xyztony1985 2011-06-17  
看懂了就好,
虽然简单,也是一种分享,
相信能帮到人
1 楼 flyliying 2011-06-16  
呵呵,顿悟!!

相关推荐

Global site tag (gtag.js) - Google Analytics