JSCORE04

  • 声明提升

    • JS代码在运行时, 会隐式做一些事情

      1. 先预读一次所有的JS代码, 把声明 都提升到作用域的顶部
      2. 然后再执行 没有提升的剩余代码部分
    • 考点:

      • let/const/var: 只提升声明, 默认值是undefined, 不提升赋值

        let a = 6
        
        let a    提升这里 
        a = 6    赋值不提升,会留下来
        
        • let/const: 提升但是处于 暂存死区, 赋值前不能用
      • function: 函数提升 整个函数,包含函数体

  • 函数

    • 隐式的变量: arguments, 保存了函数接收的所有参数
      • 不固定参数数量的函数
      • 函数重载: 根据参数个数/类型不同 做不同的事
    • this指向
      • 直接调用函数: this指向运行时所在的对象
      • 严格模式下: 全局调用的函数, this指向 undefined
      • new运算符: this是个空对象, let this={}
      • 箭头函数的this: 有特殊机制,今天讲.
    • 闭包:
      • 函数声明之后, 为了保证在后续使用中都可以正常使用, 会保存声明时所在的词法环境
      • 具体解释: 函数声明时, 查看函数体中使用了哪些变量, 要根据作用域链 的就近原则, 找到这些变量所在的作用域, 统统保存在自身的scopes变量中. 以后函数触发时,就从自身的scopes变量中读取值
      • 如果变量是属于函数作用域的, 在存储到scopes中时, 称为闭包:closure
  • 对象:

    • 引用类型: var a = 对象类型, 实际上 变量a中存储的是对象的地址

    • 构造函数: 快速创建指定结构的对象类型

    • 写法: 搭配new运算符使用

      function Demo(a, b){
          // let this = {}
          
          // this.__proto__ = Demo.prototype
          
          this.a = a
          this.b = b
      
      	// return this
      }
      
      new:会隐式做3件事
      
      let d = new Demo(11, 22)
      
    • 原型: prototype

      • 把构造函数中要声明的函数, 存储到 函数的prototype对象类型中, 主要是后期可以复用
    • 对象的__proto__:

      • JS引擎的原型链机制: 对象自身没有的属性, 到其 __proto__变量中查找
  • 精确配置对象属性

    • defineProperty(对象, 属性名, {配置项})
    • 配置项: 可读, 可配置, 可遍历, 默认值, get计算属性, set赋值监听
  • 数组高阶函数

    • 后期网页中的数据都应该来源于服务器接口, 服务器通过查询数据库得到的通常是 数组类型
    • 所以: 操作数组 是未来的一个核心操作
    • every: 每一个都符合
    • some: 至少有一个符合
    • map: 映射
    • filter: 过滤
    • forEach: 简单的遍历, 代替 for循环
    • reduce: 归纳 合并 数组的元素 成为 1个值
  • 箭头函数:

    • 简化匿名函数: ()=>{}
    • 语法糖1: 只有一个参数, ()可以不写: name => {}
    • 语法糖2: 方法体只有一行, 可以省略: {return }
      • ()=> 12 | ()=> { return 12 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值