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);
  • 相关阅读:
    红黑树(RBTree)
    js闭包简要分析
    html 5的localstorag
    浅析CSS中的haslayout
    初识sass框架
    BFC块级格式化上下文简述
    RESTful互联网框架
    javascript的框架演化
    浅析angular框架的cookie
    angular template浅析
  • 原文地址:https://www.cnblogs.com/hitbs228/p/3688906.html
Copyright © 2011-2022 走看看