函数是一等公民
MDN First-class Function (头等函数)
- 函数可以存储在变量中
- 函数作为参数
- 函数作为返回值
在 JavsScript 中函数就是一个普通的对象(可以通过‘new Function()’来创建一个函数对象),我们可以把函数存储在变量/数组中,它还可以作为另一个函数的参数和返回值,甚至我们可以在程序运行的时候通过 new Function('alert(1)') 来构造一个新的函数。
- 把函数赋值给变量
// 把函数赋值给变更,函数表达式及调用
let fn = function () {
console.log('Hello First-class Function');
}
fn()
// 一个示例
// 定义的方法和内部调用的方法是相同的形式,即参数和返回值是一样的
// 一个函数包裹了另一个函数,并且它们的形式也相同,那它们就是一样的函数,可以进行精简优化
const BlogController = {
index (posts) { return Views.index(posts) },
show (post) { return Views.show(post) },
create (attrs) { return Db.create(attrs) },
update (post, attrs) { return Db.update(post, attrs) },
destroy (post) { return Db.destroy(post) }
}
// 优化
// 把一个函数(方法)赋值给另一个函数(方法),而不是把一个函数(方法)的调用来进行赋值
// 赋值是函数(方法)的本身,而不