闭包(closure),即当使用高阶函式(function中有function、function回传function)时,可以将外层函式里宣告的变数&值「包进来」=>保留到内层函式使用。
闭包的本质,建立於范围链(Scope chain)的设计之上。其中一种范围链现象,就是前文『Day-12 函式与变数』 曾经提过的「函式变数未宣告,往外变全域」现象。完整
说明请另参考:
『[JavaScript] Javascript 的作用域 (Scope) 与范围链 (Scope Chain):往外找』
例:setTimeout与加法器
// 外层函式 = a
function a() {
var x = 123
// closure 闭包
// 内层函式 = setTimeout
setTimeout(() => {
console.log(x)
}, 1000)
}
a()
x 本来会随着外层的泡泡破掉而消失,但 JS 却能把 x 一起带到 WebAPI 排队。
意者另可参考:『所有的函式都是闭包:谈 JS 中的作用域与 Closure』
前面完成了「Reviews」区块,今天来完成「Plans」的区块。 数据收集 标题的样式 Font...
本文章同时发布於: Medium iT 邦帮忙 大家好,这几天较有时间,终於可以好好的思考文章 XD...
Day12 Level Design 接下来我们要开始设计关卡, 小蜜蜂的关卡很单纯,但是背後的心理...
透过前面 15 篇的文章,相信大家已经了解要怎麽利用 git 指令将档案进行版本控制、将档案 pus...
今天文章会延续昨天的程序码去做建构式的学习纪录 我们先看看原本的程序码: var player=ne...