解决方案 »

  1.   

    name : "My Object"会被保存在getNameFun函数里面,当调用的时候,会返回My Object
      

  2.   

    运行结果是:The Window
      

  3.   

    运行结果是:The Window
    我有时候也挺疑惑,这样做有什么好处么?函数能访问函数之外的变量,会很让人困惑和混淆,要是函数需要数据,就传入参数最好了。先这样的代码还容易引起垃圾回收混乱,造成泄漏。
      

  4.   

    var name = "The Window";   
      var object = {   
        name : "My Object",   
        getNameFunc : function(){ //为了说明,此function为A也即getNameFunc
          return function(){   //此function为B
            return this.name;   
         };   
        }   
    };   
    alert(object.getNameFunc()());
    //当执行object.getNameFunc()时放回的是B方法,而方法不是object的方法,故this并不是代表object而是代表window
    //运行结果是window.name 即name="The Window";   
      

  5.   

    运行结果是:The Window
    我有时候也挺疑惑,这样做有什么好处么?函数能访问函数之外的变量,会很让人困惑和混淆,要是函数需要数据,就传入参数最好了。先这样的代码还容易引起垃圾回收混乱,造成泄漏。我查阅了相关数据文档,优点大致有三。
    1、保护函数内的变量安全。外部函数中变量只有内部函数才能访问,而无法通过其他途径访问到,因此保护了i的安全性。
    2、在内存中维持一个变量。 
    3、通过保护变量的安全实现JS私有属性和私有方法(不能被外部访问)
    -----
    其实也是有利有弊,也没用绝对,主要还是看应用场景