闭包/变量提升

144 阅读1分钟

闭包的用途 可以读取函数内部的变量 让这些变量的值始终保持在内存中

function fn1(){ let a = 1 代码中的内部函数(fn2)就是闭包

可以把闭包简单理解成"定义在一个函数内部的函数" 是将函数内部和函数外部连接起来的一座桥梁 function fn2(){ 闭包就是能够读取其他函数内部变量的函数 document.write(a); } return fn2; } console.log( fn1() ) */ 通过这种方式 就可以得到fn1的局部变量a的值 / fn1()() / function fn(){} console.log(fn); */

变量提升

  当你下面使用var的时候会出现变量提升的情况 
  var a  =>  a = undefined (已经声明了 
    但是没有赋值,给了一个初始值叫做undefined ) 
    console.log(a);
    var a = '123'; 

    var a = 123;
    var a = 456;
    console.log(a); 

     let 不存在变量提升,不能在还没有初始化的时候
    使用变量,否则就给报错 下面的代码就不会被执行 
     console.log(a)
    let a = '123'
    console.log(123); 
    let不能够重复定义 
    let a = 123;
    let a = 456;
    console.log(a);

    函数是js里面的一等公民 

    声明了function会提升函数到最前面 

    页面一加载的时候会先找有没有 varfunction
    如果发现有var 就会把变量预定义为undefined
    如果发现有function 就会把function这个方法放在最前面