# 八.同步与异步

前言

# 1.异步

# 2.高阶函数

函数作为一等公民,可以作为参数和返回值。

# 2.1.可以用于批量生成函数

let toString = Object.prototype.toString
let isString = function (obj) {
  return toString.call(obj) == `[object String]`
}
let isFunction = function (obj) {
  return toSting.call(obj) == `[object Function]`
}
let isType = function (type) {
  return function (obj) {
    return toString.call(obj) == `[object ${type}]`
  }
}
1
2
3
4
5
6
7
8
9
10
11
12

# 2.2.可以用于需要调用多次才能执行的函数

let after = function (time, task) {
  return function () {
    if (times-- == 1) {
      return task.apply(this, arguments)
    }
  }
}
let fn = after(2, function () {
  console.log(3)
})
fn()
1
2
3
4
5
6
7
8
9
10
11