es5实现继承
function es5Extend (targetClass, extendClass) {
var protopety = extendClass.protopety
protopety.construstor = targetClass
targetClass.protopety = protopety
}
function Parent(){}
function Child (){
Parent.call(this)
}
谈谈你对作用域的理解
- 作用域主要分为 全局作用域、函数作用域、块级作用域
- 全局作用域 定义的变量和函数在作用域的容易位置都可访问
- 函数作用于定义的变量和函数只能在当前函数作用域下使用
- 块级作用域let、const才能生效块级别作用域
- 变量和函数在当前作用于下查询不到会向上级作用域查找, 直到找到或到全局作用域依然没找到位置
闭包的作用和原理
- 闭包主要通过, 传入一个函数或返回一个函数的方式来创建
- 经常用于装饰器相关功能, 比如做一些节流、防抖、轮询事件之类的
- 主要是利用作用域链的特性,且变量是在定义时决定的, 作用域查找是根据变量定义时的作用域开始查找, 而不是运行时的作用域开始查找
谈谈变量提升
- 变量提升主要是var和function等es5之前的声明
- js会将var 的变量名提前到当前作用域最开始的地方进行声明
- 等到执行到具体代码时才会进行赋值
什么是立即执行函数
(fuction(){})()