/**
 2016-11-10.
  */
 /**
  * Date: 12-3-24
  *
  * 说明: 这个例程说明闭包性和回调函数的原理
  * 执行程序的输出如下:
  **这是函数a.c()
  **这是字符串: 是一个字符串
  **这是局部函数inner()
  **这是函数a.d(callback)
  **这是匿名函数
  **这是函数a.e(string)
  **变量string是: 这是字符串
  */var  a = {
     b : "这是字符串"
 };a.c = function () {
     console.log("这是函数a.c()");
     console.log(this.b + ": 是一个字符串");
     var b = this.b;
     inner(this.d);
     function inner(callback) {
         console.log("这是局部函数inner()");
         callback(function () {
             console.log("这是匿名函数");
             a.e(b); //这里的匿名函数可以访问到函数a.c()中定义的变量b;a是全局对象。
         });
     };
 }; a.d = function (callback) {
     console.log("这是函数a.d(callback)");
     callback()
 };a.e = function (string) {
     console.log("这是函数a.e(string)");
     console.log("变量string是: " + string);
 };
 a.c();


"D:\Program Files\JetBrains\WebStorm 8.0.6\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" closure.js
这是函数a.c()
这是字符串: 是一个字符串
这是局部函数inner()
这是函数a.d(callback)
这是匿名函数
这是函数a.e(string)
变量string是: 这是字符串

Process finished with exit code 0