在在闭包中获取值示例中,incrementBySeven
和incrementByTen
是常量,但这些常量引用的闭包仍然能够增加它们捕获的runningTotal
变量。这是因为函数和闭包是参考类型。
每当您为常量或变量分配函数或闭包时,您实际上是在将该常量或变量设置为对函数或闭包的引用。在上面的示例中,incrementByTen
指的是闭包的选择是常量,而不是闭包本身的内容。
这也意味着,如果您将闭包分配给两个不同的常量或变量,这两个常量或变量都引用相同的闭包。
let alsoIncrementByTen = incrementByTen
alsoIncrementByTen()
// returns a value of 50
incrementByTen()
// returns a value of 60
上面的示例表明,调用alsoIncrementByTen
与调用incrementByTen
相同。由于它们都引用相同的闭包,因此它们都会增量并返回相同的运行总数。