请问以下两个为什么不一样?
var a=1;
(function(){
a++;
})();
alert(a);//2
var a=1;
(function(a){
a++;
})(a);
alert(a);//1
闭包传参和不传参的区别是什么呢?
请问以下两个为什么不一样?
var a=1;
(function(){
a++;
})();
alert(a);//2
var a=1;
(function(a){
a++;
})(a);
alert(a);//1
闭包传参和不传参的区别是什么呢?
自己体会吧
var a=1;
(function(){
a++;
})();
alert(a);//2
var a=1;
(function(a_in_fun){
a_in_fun++;
})(a);
alert(a);//1
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答889 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
立即执行函数[2]定义的函数为一个闭包函数,在函数体内的变量a指向[1]处声明的变量
所以当立即执行函数[2]执行完毕后,a的值为2
立即执行函数[2]不形成任何闭包,在函数体内的变量a为函数生成的形参变量,和[1]处声明的变量没有关系,只是名字相同而已~~~
如果修改如下代码,那么输出就为2,有闭包函数形成