zhuawa 学习笔记

96 阅读1分钟

JavaScript

作用域

作用域,就是根据名称查找变量的规则。

词法作用域/静态作用域词法作用域

定义在词法阶段的作用域,词法作用域就是你写代码的时候,将变量写在哪里决定的因此,当词法分析器处理代码时会保持作用域不变。(eval,with)

函数作用域函数作用域

属于这个函数的全部变量,都可以在整个函数内使用,

上下文

词法作用域,是在写代码的时候,或者在定义时,确定的;而动态作用域,是在运行时确定。[高阶函数]

闭包

函数嵌套函数时,内层函数引用了外层函数作用域下的变量,并且内层函数在全局环境下可访问,就形成了闭包。

闭包可用于保存执行环境

使用场景

  • 缓存计算结果
  • 创建私有变量

this

this 的指向,是根据上下文,动态决定的。

  • 在简单调用时,this 默认指向的是window/global/undefined (浏览器/node/严格模式)
  • 对象调用时,绑定在对象上;
  • 使用 cal.apply.bind 时,绑定在指定的参数上;
  • 使用 new 关键字是,绑定到新创建的对象上;

(以上三条优先级:new>apply/call/bind>对象调用)使用箭头函数,根据外层的规则决定。