JS闭包解析
Posted xiaozhumaopao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS闭包解析相关的知识,希望对你有一定的参考价值。
参考文章 : 深入理解JS闭包
正常来说,函数内定义的变量是私有变量,函数外部无法获取,但是闭包是指有权访问另一个函数作用域中的变量的函数。
function aa() var name = ‘lihua‘; return function bb() return name; function bb() var cc = aa(); console.log(cc()); bb(); ---- function f1() var n=999; nAdd=function()n+=1 //没有定义 var 是全部变量 function f2() alert(n); return f2; var result=f1(); result(); // 999 nAdd(); result(); ----- //闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。 function f1() var n=999; function nAdd() n+=1; console.log(n); return nAdd; var result=f1(); result(); //1000 result(); //1001 result(); //1002 ========== var name = "The Window"; var object = name : "My Object", getNameFunc : function() return function() return this.name; ; ; console.log(object.getNameFunc()()); ------ var name = "The Window"; var object = name : "My Object", getNameFunc : function() var that = this; return function() return that.name; ; ; alert(object.getNameFunc()()); =========== var sum =10 function add() var sum = 0; function operation() return sum = sum ? sum + 1 : 1; return operation var a = add(); console.log(a()); console.log(a());//2 console.log(a());//3 console.log(a());//4 a = null; // a = add(); console.log(a());//1 ---------------------
深入理解JS闭包 [https://blog.csdn.net/cauchy6317/article/details/81167572]
链接:https://www.nowcoder.com/questionTerminal/da4115e308c948169a9a73e50d09a3e7
现有如下html结构 <ul> <li>click me</li> <li>click me</li> <li>click me</li> <li>click me</li> </ul> 运行如下代码: var elements=document.getElementsByTagName(‘li‘); var length=elements.length; for(var i=0;i<length;i++) elements[i].onclick=function() alert(i); 依次点击4个li标签,哪一个选项是正确的运行结果()? 依次弹出1,2,3,4 依次弹出0,1,2,3 依次弹出3,3,3,3 依次弹出4,4,4,4 var elements=document.getElementsByTagName(‘li‘); var length=elements.length; for(var i=0;i<length;i++) elements[i].onclick=function(num) return function() alert(num); ; (i); ---------------------
以上是关于JS闭包解析的主要内容,如果未能解决你的问题,请参考以下文章