大家看看这段代码能否准确的说出输出语句是什么?
```
package main
import "fmt"
var a int
func funca() {
a, b := 12, 3
fmt.Println("a is ", a, " b is ", b)
}
func funcb() {
fmt.Println("a is ", a)
}
func main() {
funca()
funcb()继续阅读 »
Closures are functions that refer to independent (free) variables
闭包是静态方式/词法方式进行存储所有父作用域的一个函数
在 JavaScript 高级程序设计里面通过一个createComparisonFunction()函数和这个函数的作用域链之间的关系图说得很明白为什么闭包可以访问外部函数的变量,是因为闭包的作用域链不仅包括自己本地的活动对象,还包括外部函数作用域链所指向的活动对象继续阅读 »
闭包是js中一个难懂又必须征服的概念,他的形成与变量作用域以及变量的生存周期密切相关。
变量作用域和生存周期
作用域,按字面理解,就是指变量的有效范围,超出这个范围就无法访问。
在函数中,里面函数可以访问外面的变量,但是外面无法访问内部变量。举个简单例子:
var a = 1;
var fun1 = function() {
var b = 2;
var fun2 = function() {
var c = 3;
alert(b); //2
alert(c); //3
}
fun2();
alert(c); //c is not de继续阅读 »