首页 > 其他分享 >深入变量和闭包

深入变量和闭包

时间:2023-02-28 23:00:23浏览次数:35  
标签:闭包 let 变量 作用域 GO 报错 var 深入

加var 变量和不加var 变量的区别

  1. 加var的变量 都会提升,不管代码执行与否, 不加var的变量预编译阶段不会提升
  2. 原型链 和作用域链
        window.a  //不会报错 返回undefined   访问对象不存在的属性不会报错 ,走原型链 访问GO中不存在的属性
        a //直接访问未定义的变量会报错, 走作用域链 没有找到
    
  3. 不管是否加var 只要是全局变量, 在非严格模式下都会挂载到GO上
  4. 没有加var的只能做全局
  5. 项目中尽量避免var , 更不要不声明

let

  1. 声明的变量不能访问
  2. let + {} 可以形成块级作用域 只能在块中使用
  3. 使用let声明的变量 不会挂载到GO上
  4. let定义同一个变量只能定义一次 ,二次定义会报错
        function(a){
        // 在函数内部的形参相当于函数定义的局部变量
            let a = 1  //这里会报错
        }
    

const

  1. 声明的变量不能修改
  2. 声明必须赋值, 不然报错
  3. 声明的变量不会提升
  4. const 和{}也可以形成块作用域 ,也不会挂载到GO上

闭包 一个不能回收的栈内存

  1. 保护EC中的变量 外界不能范围
  2. 保存 可以像使用全局变量一样使用局部变量 延长变量的生命周期

16775691951299

练习题

16775791447485
//

16775897292431

16775919669535

16775947963300

标签:闭包,let,变量,作用域,GO,报错,var,深入
From: https://www.cnblogs.com/whokillbill/p/shen-ru-bian-liang-he-bi-bao.html

相关文章