Swift中的闭包的一般概念类似于Javascript中的闭包,还是它们使用相同的单词“闭包”但具有不同的规则?具体来说,(引用我的朋友)在Javascript中的封闭是“水晶球,只能在创建它的地方同行”。Swift中的闭包概念类似于Javascript中的闭包吗?
所以,在Javascript此代码的工作:
var outside = 5;
function test() {
alert(outside); // returns 5
}
这是否意味着斯威夫特,如果我以任何可能的方式创建关闭,这将在相同的范围身在何方关闭访问所有本地变量被创建?
(我看的closure in programming维基百科的定义,但感觉太模糊了 - 特别是,什么样的价值观是闭合保持跟踪)
维基的定义对我来说似乎很清楚 - “闭包是一个函数或对函数的引用以及引用环境 - 存储对该函数的每个非局部变量(也称为自由变量或向上值)的引用的表。闭包 - 与普通函数指针不同 - 允许函数访问那些非局部变量,即使在其直接词法作用域之外调用时也是如此。“ – elclanrs
在那个JS示例中,不是”局部变量“是局部变量,但是? – Rudi
@ Rudi本地到外部函数(包含您显示的所有代码的函数),但不是本地到'test'。 – delnan