zoukankan      html  css  js  c++  java
  • 关于闭包我想说的

    闭包是保护并重用局部变量的机制
    为什么用: 全局变量: 优: 随处可用,可重用,缺: 易被污染
    局部变量: 优: 仅在函数内用,安全,缺: 不可重用
    何时使用: 希望重用一个变量,又不希望被污染时-保护局部变量
    如何定义: 3步:
    1. 定义受保护的局部变量
    2. 定义内层函数专门操作受保护的变量
    3. 定义外层函数将受保护的变量和操作变量的函数封装起来,外层函数将内层函数返回到外部

    <script>

    function fun(){
    for(var i=0,arr=[];i<3;i++){
    //函数定义时不执行函数体
    arr[i]=function(){return i};
    }//i=3
    return arr;
    }
    var funs=fun();
    //funs:[
    // function(){return i},
    // function(){return i},
    // function(){return i}
    //]
    console.log(funs[0]());//3
    console.log(funs[1]());//3
    console.log(funs[2]());//3

    function f(){
    var n=999;
    /*window.*/nAdd=function(){n++};
    return function(){return n;}
    //n=999
    }
    var get=f();
    //f共抛出了几个内层函数:
    //get: function(){return n;}
    //nAdd: function(){n++}
    console.log(get());//999
    nAdd();
    console.log(get());//1000

    </script>

  • 相关阅读:
    sql刷题day03
    sql刷题day2
    sql刷题day1
    Vue学习
    HashMap学习笔记整理
    数组问题(鸽巢原理、数字交换、链表寻环)
    mybatis参数设置问题
    codeforces 327A
    codeforces 189A
    codeforces-455A
  • 原文地址:https://www.cnblogs.com/tracy-zhu/p/5758170.html
Copyright © 2011-2022 走看看