@JunQiu
2018-12-16T09:53:19.000000Z
字数 1793
阅读 1844
summary_2018/08 designIdea language_js



## Example:// 作用域// Global definition of aCentaur.var aCentaur = "a horse with rider,"// A local aCentaur variable is declared in this function.function antiquities(){var aCentaur = "A centaur is probably a mounted Scythian warrior"}antiquities()aCentaur += " as seen from a distance by a naive innocent."document.write(aCentaur);// Output: "a horse with rider, as seen from a distance by a naive innocent."// 作用域链(见下图)

## Examplefunction f1 () {let name = 1return function () {console.log(name)}}const res = f1()res() // 1// 使变量始终驻留在内存中function f1 () {let name = 1return function () {name++console.log(name)}}const res = f1()res() // 2res() // 3// 由于f1是返回函数的父函数,返回函数赋值给一个全局变量res导致返回函数驻留在内存中,因此f1也驻留在内存中(name)。// 一个Tips:全局函数闭包function f1 () {let n = 999// 闭包函数,全局nAdd = function () {n += 1console.log(n)}// 闭包函数,局部function f2 () {console.log(n)}return f2}// 全局函数,只有一个,此时n指向result的局部变量const result = f1()result() // 999nAdd() // 1000result() // 1000// 此时n指向result1的局部变量const result1 = f1()result1() // 999nAdd() // 1000result() // 1000result1() // 1000
