闭包自我理解

<script type="text/javascript">

var numAdd;  //全局变量

function f1() {

var num = 100; //局部变量

numAdd = function() {     //numAdd 函数此时numadd 为全局变量

num += 1;

console.log(num)

}

function f2() {   //f2函数

alert(num);

}

function f3() { //f3函数

alert(num);

}

return f3;  //f2 f3 函数在 f1 函数里面 所以全局无法调用f2 f3 函数 当把f3,f2 return 出函数 

}

var result=f1();  

result() // result() => f1()()

numAdd();  // 当没有变量result 时 即使numAdd为全局变量 也无法使用函数

result(); //100

</script>


var result=f1();  和 var result= new f1();  的区别 

var result= new f1(); 实例化一个对象时 会在实例化函数里面创建一个空对象 然后将this的指向 指向空对象 最后 return this

而里面的函数则是添加到这个空对象中  所以 在实例化的变量 可以点出函数里面的函数

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容