1 作为参数 2 作为返回值 ,请参考https://www.cnblogs.com/wangfupeng1988/p/3994065.html
自由变量(在作用域中使用,但是没在该作用域中定义): 在创建的函数的作用域取值。
全局作用域/函数作用域 (声明时就生成作用域),执行上下文环境:执行时给变量赋值
闭包: 正常函数调用完会销毁上下文环境,但是闭包返回一个新的函数,则创建了新的作用域,并且可能会用到外层执行上下文环境中的变量,所以外层执行上下文环境不能销毁。
作用域、执行上下文、闭包密不可分