<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var a;
function initialize(){
fun2(function fun(){
a=1;
alert("2."+a);
fun2();
});
}


function fun2(abc){
alert(a);
}
alert("3:"+a);
</script> 
</head>
<body onload="initialize()">  
</body>
</html>
怎么样能够使得全局变量a 在fun()中被赋得值即a=1长期有效,使得等到fun2()的alert("2."+a)和最外层的alert("3."+a);都是1.

解决方案 »

  1.   


    var a;
    var fun
    (fun = function(){
    a=1;
    alert("2."+a);
    fun2();
    })();
        function initialize(){
    fun2(fun);
        }
        
        
        function fun2(abc){
            alert(a);
        }
        alert("3:"+a);
      

  2.   

    把声明时的var去掉变量变成的全局变量,在window下有效,加上var只在方法作用域内有效
      

  3.   

    但是不能在最外面只声明为 :a;但是 var a;就可以;
      

  4.   

    a;// 为表达式语句,a未初始化为undefined调用a肯定出错
    var a;// 是声明变量