论坛首页 入门技术论坛

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

浏览 15465 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-06-17   最后修改:2011-06-17
JavaStudyEye 写道
请问

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

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


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


undefined是一个普通参数。
0 请登录后投票
   发表时间:2011-06-17  
不错的哦~
0 请登录后投票
   发表时间: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
似懂非懂,现在是懂了。
0 请登录后投票
   发表时间:2011-06-17  
还原到原生javascript,就是以下这行代码:

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

这叫“匿名函数立刻执行”,()()一个不能少
0 请登录后投票
   发表时间:2011-06-17  
啊?我一直没看懂,是闭包吗?
0 请登录后投票
   发表时间:2011-06-18  
搜下匿名函数,就会明白了
0 请登录后投票
   发表时间: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);
0 请登录后投票
   发表时间:2011-06-18   最后修改: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知道对不
0 请登录后投票
   发表时间:2011-06-18   最后修改:2011-06-18
JavaStudyEye 写道
请问

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

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


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

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

test();

看看这个打印出来什么?
1 请登录后投票
   发表时间: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跟闭包毫无关系
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics