2013-01-19 138 views
0
function google(){ 
    var kevin = "hello"; 
    john(kevin); 
} 

function john(arg){ 
    var mark = arg; 
    function yahoo(mark){ 
      alert(mark); 
    } 

} 

现在,当我打电话给我的功能google()为什么它没有在雅虎呼叫警报。传递内部函数内部对象

回答

2

你不叫yahoo。你需要这样做:

function john(arg){ 
    var mark = arg; 
    function yahoo(mark){ 
      alert(mark); 
    } 

    yahoo(mark); // <------- 
} 

你也可以重构你的代码做这样的事情:

function john(arg){ 
    var mark = arg; 

    (function yahoo(){ 
      alert(mark); 
    })(); 
} 
+0

我需要一个变量标记,或者我可以直接传递参数。 – Kevin

+0

如果你愿意,你可以通过arg。 – Lloyd

+1

@Lloyd您的语法在重构的案例中无效。自执行功能应该用圆括号包装。 – VisioN

1

因为john内没有yahoo功能的呼叫。

function john(arg) { 
    var mark = arg; 
    function yahoo(mark) { 
      alert(mark); 
    } 
    yahoo(mark); // <-- call 
} 
1

你们定义功能yahoo,但从来没有真正调用它。试试这个:

function google(){ 
    var kevin = "hello"; 
    john(kevin); 
} 

function john(arg){ 
    var mark = arg; 
    yahoo(mark); 
    function yahoo(mark){ 
      alert(mark); 
    }  
}