关于作用域闭包的一些理解
闭包 红宝书上对闭包的定义:有权访问另外一个函数作用域中变量的函数。 MDN对闭包的定义是:是能够访问自由变量的函数。 自由变量:是指在当前函数中可以使用的( 但是既不是arguments也不是本函数定义的局部变量 )。 两个点: 是个函数 能访问另一个函数作用域中的变量,即使外层函数的上下文已经被销毁 就是说我们常见的比如 内部函数从外部函数返回 这种状态,该内部函数就是闭包。可以看如下特性中的示例! 说明闭包的几个特性: 可以访问当前函数以外的变量 function outer() { var date = '11月1日'; function inner(str) { console.log(str + date) } return inner('today is ') } outer() function outer() { var date = '11月1日'; return function () { console.log('today is ' + date) }() } outer() // 上下两例均返回“today is 11月1日” 即使外部函数已经返回,闭包仍然能够访问外部定义的变量 function outer() { var date = '11月1日'; function inner() { console.log('today is ' + date