前端基础16:闭包/作用域销毁/this操作

闭包

  • 函数运行时形成一个私有的封闭的空间,这就是一个闭包,闭包是一种机制。
  • 封装性
  • 保护的作用,防止里面的内容和外界冲突和覆盖

闭包的几种形式

  • 自执行函数
    • 将函数外的值传到函数内部:传参是为了拿到外面的值
    • 将函数内的值传到函数外:window.a = 函数内部定义的变量值
  • 函数的返回值是一个小函数
    • 利用预处理的思想:先提前在fn大函数中,先提前处理公有的内容,等到return后面小函数运行时会用到提前处理的内容
  • 自执行函数内部返回对象(高级单例模式)
    • 解决了公有和私有的问题
    var utils = (function () {
        var name = 'lili';
        function login() {
            console.log("login")
        }
        function register() {
        console.log('register')
        }
        return {
            login:login,
            register:register,
            name
        }
    })();
    console.log(utils.name); //lili
    utils.login(); //login
    utils.register();//register
复制代码

let和var区别

  • let没有变量提升
  • 在当前作用域下,es6中不允许重名变量

const和var区别

  • const没有变量提升
  • 在当前作用域下,const中不允许重名变量
  • const 不允许重新赋值

作用域销毁

  • 全局作用域

    • 页面关闭时销毁
  • 私有作用域

    • 正常情况:方法运行完之后,作用域销毁。——立即销毁
    • 1.当一个函数返回另一个函数时,这个函数不会立即销毁,等返回这个小函数运行完后,函数A才销毁。 ——这种叫不立即销毁
    • 2.当函数内部的内容被外界占用,那么这个函数就不销毁了。
  • 作用域不销毁的优缺点

    • 缺点:会占用内存
    • 优点:上次操作的结果被保存下来,下次操作可以用上次的结果

堆内存的销毁:

  • 如果堆内存的引用地址被变量给占用了,这时堆内存不会销毁,只有没有变量指向这个堆内存时,浏览器会在空闲时回收这块内存,这称为垃圾回收机制。(标准浏览器下的回收机制)

this

  • 1.看方法名前有没有点,若没有则this是window,若有点,点前是谁this就是谁
    function fn() {
        console.log(this);
    }
    var obj = {
        num:20,
        fn:fn
    }
    obj.fn();//obj
    fn();//window
复制代码
  • 2.自执行函数的this是window
  • 3.事件绑定函数的this是绑定的元素

转载于:https://juejin.im/post/5b9118256fb9a05d2b6d9692

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值