zoukankan      html  css  js  c++  java
  • 闭包

    变量作用域

    变量根据作用域的不同分为两种:全局变量和局部变量

    1、函数内部可以使用全局变量。

    2、函数外部不可以使用局部变量。

    3、当函数执行完毕,本作用域内的局部变量会销毁。

    什么是闭包

    闭包,指有权访问另一个函数作用域中变量函数

    简单理解就是,一个作用域可以访问另一个函数内部的局部变量。

    function fn() {
      var num = 10;
      function fun() {
        console.log(num);
      }
      fun();
    }
    fn(); // 10
     
    闭包应用-点击li输出当前li的索引号
     1 <body>
     2   <ul class="nav">
     3     <li>榴莲</li>
     4     <li>臭豆腐</li>
     5     <li>鲱鱼罐头</li>
     6     <li>大猪蹄子</li>
     7   </ul>
     8 <script>
     9 // 闭包应用-点击li输出当前li的索引号
    10 // 1. 我们可以利用动态添加属性的方式
    11 var lis = document.querySelector('.nav').querySelectorAll('li');
    12 for(var i = 0; i < lis.length; i++) {
    13   lis[i].index = i;
    14   lis[i].onclick = function() {
    15     console.log(this.index);
    16   }
    17 }
    18 // 2. 利用闭包的方式得到小li的索引号
    19 for(var i = 0; i < lis.length; i++) {
    20   // 利用for循坏创建了4个立即执行函数
    21   // 立即执行函数也称为小闭包,因为立即执行函数里面的任何一个函数都可以使用它的i这个变量
    22   (function(i) {
    23     lis[i].onclick = function() {
    24       lis[i].onclick = function() {
    25         console.log(this.index);
    26       }
    27     }
    28   })(i);
    29 }
    30 </script>
    31 </body>
  • 相关阅读:
    A. Difference Row
    B. Fixed Points
    命运
    Climbing Worm
    大学感想
    Constructing Roads
    lintcode605- Sequence Reconstruction- medium- airbnb google
    lintcode616- Course Schedule II- medium
    lintcode615- Course Schedule- medium
    lintcode127- Topological Sorting- medium
  • 原文地址:https://www.cnblogs.com/guwufeiyang/p/13172068.html
Copyright © 2011-2022 走看看