• javascript闭包、变量提升


    一、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
  • 相关阅读:
    IO模型
    MySQL存储引擎问题
    Flask信号流程
    Flask应用运行流程
    Linux远程连接及常用指令
    Linux的安装与配置
    python GIL锁问题
    python深浅拷贝问题
    pyhton中的__new__和__init__
    直流调速系统Modelica基本模型
  • 原文地址:https://www.cnblogs.com/songya/p/8625183.html
Copyright © 2020-2023  润新知