javascript - 闭包闭包闭包 还是不懂闭包
本文介绍了javascript - 闭包闭包闭包 还是不懂闭包的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
闭包闭包 还是不懂啊。求解释。
var fwx = (function(){
var i = 0;
var a = 1;
var b = 2;
var c = function (m) {var a = m;
a = m;
console.log(i++);
// i = null;
};
var d = function () {
var v = a;
console.log("。。。。"+a);
console.log(i++);
console.log(this.i);
return v;
};
return {
i : i ,
a : a ,
c : c ,
d : d
}
})();
console.log(fwx.i+"+"+fwx.a,
fwx.d()+"+"+fwx.i,
fwx.d()+"+"+fwx.i,
fwx.c(111)+"+"+fwx.i,
fwx.d()+"+"+fwx.i,
fwx.d()+"+"+fwx.i,
fwx.d()+"+"+fwx.i,
fwx.a
);
1.c方法中的闭包域中有 a、i
那么该a和fwx.a 有什么区别?
2.我该如何清楚闭包?
解决方案
闭包就是函数可以访问其声明时所在作用域内的变量,根据这个特性可以在函数内返回一个函数,通过这个被返回的函数可以在函数外部访问函数内的变量;
根据作用域链,当函数访问变量时先在自身作用域内查找,若没有则向外层函数的作用域查找,依此类推,直到找到全局作用域为止,因为c函数作用域内有a,所以c函数内的a和fwx的a并不一样,而i是fwx内的i
这篇关于javascript - 闭包闭包闭包 还是不懂闭包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文