私有作用域&闭包机制

闭包:是一种机制,函数执行的时候会形成一个私有作用域,来保护里面的变量不受外界干扰,我们把这种机制叫做闭包,私有变量有两种:一种是参数,第二种是在私有作用域下也解释的变量

函数执行的步骤:
1.形成私有作用域
2.给形参赋值
3.预解释
4.函数体执行

function fn(){
var f=0;
f++;
console.log(f)
}
console.log(f);

全局:预解释:function fn=xxxfff000; 代码执行:f没有 所以报错了

var a=1;
var b=2;
function sum(a){
  var b=10
a++
b++
console.log(a,b)}
//全局预解释:var a,b,function sum=xxxfff000
//全局执行:a=1,b=2,sum(1)形成一个私有作用域
//1.给参数赋值,a=1
//2.私有作用域预解释:var b
//3.b=10,a=2,b=11
//全局中console.log(a,b);1,2

在私用作用域下遇到变量先看是不是自己的私有变量(两者),是的话就是私有的,不是的话就网上一级找,如果没有就继续找,直到找到全局下为止,还没找到就报错了,这种查找机制就叫做"作用域链",私有作用域下的私有变量外界访问不到,但是可以获取外界的"我的就是我的,你的也可以是我的"

原文地址:https://www.cnblogs.com/Jiazexin/p/7080406.html