zoukankan      html  css  js  c++  java
  • javascript闭包

    理解了下面几个例子,对于闭包,应该可以算是入门了。

     
      1.
     
      function say667() {
        var num = 666;
        var sayAlert = function() { alert(num); }
        num++;
        return sayAlert;
      }
     
      var sayAlert = say667();
      sayAlert();
     
      2.
     
      function setUpSomeGlobals() {
        var num = 666;
        gAlertNumber = function() { alert(num); }
        gIncreaseNumber = function() { num++; }
        gSetNumber = function(x) { num = x; }
      }
     
      setUpSomeGlobals();  //为三个全局变量赋值
      gAlertNumber();  //666
      gIncreaseNumber();  
      gAlertNumber();  //667
      gSetNumber(12);
      gAlertNumber();  //12
     
      3.
     
      function buildList(list) {
        var result = [];
        for(var i = 0; i < list.length; i++) {
          var iteml = 'item' + list[i];
          result.push( function() { alert(item + ' ' + list[i]); });
        }
        return result;
      }
     
      function testList() {
        var fnlist = buildList([1, 2, 3]);
        for(var j = 0; j < fnlist.length; j++) {
          fnlist[j]();
        }
      }
     
      4.
     
      function sayAlice() {
        var sayAlert = function() { alert(alice); }
        var alice = 'Hello Alice';
        return sayAlert;
      }
     
      var helloAlice = sayAlice();
      helloAlice();  //Hello Alice
     
      5.
     
      function newClosure(someNum, someRef) {
        var num = someNum;
        var anArray = [1,2,3];
        var ref = someRef;
        return function(x) {
          num += x;
          anArray.push(num);
          alert('num: ' + num + ' anArray ' + anArray.toString() + ' ref.someVar ' + ref.someVar);
        }  
      }
     
      closure1 = newClosure(40, { someVar: 'closure 1'});
      closure2 = newClosure(1000,{ someVar: 'closure 2'});
     
      closure1(5);
      closure2(-10);
  • 相关阅读:
    leetcode目录
    Windows下tuxedo配置
    实习总结
    n人比赛,可轮空,比赛轮数和场数
    Ubuntu中Eclipse安装与配置
    Lunix中文乱码解决方案
    tuxedo入门
    useradd和adduser的区别
    每个位上都是素数
    TUXEDO错误解决方案
  • 原文地址:https://www.cnblogs.com/hitbs228/p/3688906.html
Copyright © 2011-2022 走看看