码迷,mamicode.com
首页 > 编程语言 > 详细

javascript闭包、变量提升

时间:2018-03-22 19:34:39      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:color   搜索   post   out   time   undefined   add   def   col   

一、add(2)(3)求和函数(闭包)

 

1 function add(x) {
2     var a = x;
3     return function(b) {
4         sum = a + b;
5         console.log(sum);
6     }
7 }
8 add(2)(3);        //5

 

二、变量提升

 

 1 //第一种情况
 2 
 3 var a = 100; //全局变量
 4 
 5 function test() {
 6     alert(a);        //向上搜索全局变量 -->100
 7     a = 10;          //没有var修饰,所以a为全局变量,覆盖之前的全局变量
 8     alert(a);        //  -->10
 9 }
10 
11 test();

 

1 //第二种情况
2 var a = 100;
3 function test() {
4     alert(a);        //变量提升,  undefined
5     var a = 10;
6     alert(a);        //10
7 }
8 test();
 1 //第三种情况
 2 var a = 100;
 3 function test() {
 4     alert(a);       //变量提升,   undefined
 5     a = 10;
 6     alert(a);       //10
 7     var a;
 8     alert(a);       //10
 9 }
10 test();

三、看代码,给输出结果

1 for( var i = 1; i <= 3; i++) {
2     setTimeout(function() {
3         console.log(i);
4     },0);
5 };
6 // 4  4  4
1 for(var i = 1; i <= 3; i++) {
2     setTimeout((function(a) {
3         console.log(a);
4     })(i),0);
5 };
6 // 1  2  3

或者

1 for(var i = 0; i < 3; i++) {
2     setTimeout(function() {
3         console.log(i);
4     },0);
5     console.log(i);
6 }
7 // 0  1  2  3  3  3
1 for(var i = 0; i < 3; i++) {
2     setTimeout((function(n) {
3         console.log(n);
4     })(i),0);
5     console.log(i);
6 }
7 // 0  0  1  1  2  2
1 for(var i = 0; i < 3; i++) {
2     setTimeout((function(n) { return function(){
3         console.log(n);
4     };})(i),0);
5     console.log(i);
6 }
7 // 0  1  2  0  1  2

 

javascript闭包、变量提升

标签:color   搜索   post   out   time   undefined   add   def   col   

原文地址:https://www.cnblogs.com/songya/p/8625183.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!