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闭包解析的主要内容,如果未能解决你的问题,请参考以下文章

解析js中作用域闭包——从一道经典的面试题开始

JavaScript 闭包全方位解析

js闭包经典试题

js基础知识:闭包,事件处理,原型

javascript 闭包解析

我不知道的js作用域与闭包