/*作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突 * 除全局作用域之外,每个函数都会创建自己的作用域 * 作用域在函数定义时就已经确定了。而不是在函数调用时确定 * 如果要查找一个作用域下的某个变量值,就需要找到这个作用域对应的执行上下文环境,再从其中 * 找到变量的值 * * 要到创建这个函数的那个作用域中取值--是创建而不是调用 * * 闭包:两种情况:函数作为返回值,函数作为参数传递 * 当一个函数被调用后,其执行上下文环境将被销毁,其中的变量也会被同时销毁 * 有些情况 当一个函数被调用后,其执行上下文环境不会被接着销毁,这就是理解闭包的核心内容 * */ function name(){ var max=10; return function(x){ this.getname=function(){ return max } this.setname=function(name){ max=name } } } window.$=name(); (new $()).setname(1000) console.log((new $()).getname())