@JunQiu
2018-12-16T17:53:19.000000Z
字数 1793
阅读 1529
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."
// 作用域链(见下图)
## Example
function f1 () {
let name = 1
return function () {
console.log(name)
}
}
const res = f1()
res() // 1
// 使变量始终驻留在内存中
function f1 () {
let name = 1
return function () {
name++
console.log(name)
}
}
const res = f1()
res() // 2
res() // 3
// 由于f1是返回函数的父函数,返回函数赋值给一个全局变量res导致返回函数驻留在内存中,因此f1也驻留在内存中(name)。
// 一个Tips:全局函数闭包
function f1 () {
let n = 999
// 闭包函数,全局
nAdd = function () {
n += 1
console.log(n)
}
// 闭包函数,局部
function f2 () {
console.log(n)
}
return f2
}
// 全局函数,只有一个,此时n指向result的局部变量
const result = f1()
result() // 999
nAdd() // 1000
result() // 1000
// 此时n指向result1的局部变量
const result1 = f1()
result1() // 999
nAdd() // 1000
result() // 1000
result1() // 1000