函数内部的变量,在函数外部是无法获取并且修改的。
function f() {
var n = 1
n = n + 1 // 我们打算让每执行一次,n+1
return n
}
f() // 2
f() // 2
f() // 2
// 每次执行函数,变量都被重新设置,并没有实现我们要的效果
闭包就是在函数的内部,在构建一个子函数,去影响函数的值,从而达到修改函数内部变量的效果。
function f() {
var n = 0
return (function() {
console.log(n++) // 子函数,每次修改父函数的 n + 1,并且通过父函数返回到外部
})
}
add = f()
add() // 0
add() // 1
add() // 2
JavaScript 数据类型
JavaScript 数字
JavaScript 字符串
JavaScript 数组
JavaScript 对象
JavaScript Map
JavaScript Set
JavaScript null
JavaScript undefined
JavaScript 类型检测
JavaScript 包装对象
JavaScript 函数
JavaScript 参数
JavaScript 匿名函数
JavaScript 箭头函数
JavaScript 递归
JavaScript 闭包
JavaScript 生成器
JavaScript 异步
JavaScript setTimeout
JavaScript setInterval
JavaScript 回调
JavaScript Promise
JavaScript async await