闭包和this绑定

闭包

  • 定义
    • 闭包是由函数以及创建该函数的词法环境组合而成。这个环境包含了这个闭包创建时所需访问的所有局部变量
  • 作用
    • 访问函数作用域内的局部变量
    • 使函数中的变量保存在内存中不被释放
  • 缺点
    • 内存消耗大
    • 闭包会在父函数外部,改变父函数内部变量的值
  • 常见形式
    • 普通函数返回
    • 作为对象的方法返回
  • IIFE、闭包综合应用
    • 解决变量共享、变量污染问题
    • function(i){ ……}(i)
    • 通过IIFE对变量存储的改变(避免变量共享错误) (JS(ES5)没有块作用域,变量可能会共享)
    • 避免非期望的变量共享

this绑定

this绑定
  • this
    • 被自动定义在所有函数的作用域中的一个关键字
    • 在函数运行期间绑定,与函数定义无关
  • this作用
    • 复用代码,为函数自动引用合适的上下文对象
    • 提供了一个更加优雅而简便的方式来隐式传递一个对象引用
  • 绑定规则
    • 作为函数直接调用 —— 默认绑定
    • 作为对象方法调用 —— 隐式绑定
    • 作为构造函数调用 —— new绑定
    • 通过 call/apply 间接调用 —— 显式绑定
      • 变量 _this、that、self 锁定 this(软绑定)
      • 通过函数对象的bind方法来锁定(硬绑定)
  • 绑定优先级:**new 绑定 > 显式绑定 > 隐式绑定 > 默认绑定 **
严格模式
  • 开启方式:某个函数开启严格模式,得把 “use strict”; 声明放在函数体所有语句之前
  • 可以应用到整个脚本或个别函数中
  • 相对JavaScript语法和行为的不同
    • 变量必须先声明再使用
    • 全局作用域中函数中的 this 是 undefined不是window对象
    • 构造函数不加 new 调用,this 报错 ,不会指向全局对象
    • 函数参数不允许重名
高阶函数
  • 高阶函数:对其他函数进行操作的函数,函数的参数和返回值均为函数
  • 满足条件(至少一个满足)
    • 函数作为参数被传递(常见的形式:回调函数)
    • 函数作为返回值输出(常见的形式:闭包)
  • 对待不确定的变量或过程
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值