var one = function(h){
        two()
    }
    var two = function(){
        
    }
    one('hello')
怎么在two函数不传参的情况下,在two函数体内获得h的值啊?

解决方案 »

  1.   

    看看这个贴子吧。任何形参都不传,函数内部又不做任何逻辑判断的话,又想引用的话,你只好使用全局变量了。否则下面贴子里的方法你可以参考
    http://topic.csdn.net/u/20120917/16/6a27d442-3bfe-48fa-b42a-b31db4e33dc3.html
      

  2.   

    把作用域弄清楚就解决了 
    1.定义到one函数内部,
     var one = function(h){
      var two = function(){
        alert(h);
      }  two()
      }
    2.使用two函数作用域中可以访问的变量(全局变量当然肯定可以)
    var one = function(h){
      two.h=h;
      two()
      }
      var two = function(){
        alert(two.h);
      }
    说实话,这个问题莫名其妙,你不如说你想做什么让大家告诉你该怎么实现,而不是用这种根本是不可采取的方式
      

  3.   

    var one = function(h){
      two()
      }
      var two = function(){
        alert(two.caller.arguments[0])
      }
      one('hello')
      

  4.   

    要想更优美一点可以这样var one = function (h) {
    two()
    }
    var two = function () {
            alert(arguments.callee.caller.arguments[0])
    }
    one('hello')
      

  5.   

    var one = function(h){
      two()
      }
      var two = function(){
        var _h = arguments.calee.caller;
        alert(_h);
      }
      one('hello')
      

  6.   

    var one = function(h){
      two()
      }
      var two = function(){
      var _h = arguments.calee.caller.arguments[0];
      alert(_h);
      }
      one('hello')
    写错了,应该是这样
      

  7.   

    arguments.calee指向本函数,即two,arguments.calee.caller指向调用本函数的函数,即one,arguments.calee.caller.arguments[0]指调用本函数的函数的第一个参数,即h