var a;
a = 0;
function func(b){
b = 1;
document.write(b);
}
document.write(a+"<br>")
func(a);
document.write("<br>"+a)

解决方案 »

  1.   

    func方法中没有对 a变量的操作
    可以在 func中  加一句 a=b;调用 func(1);
      

  2.   


    var a = 0;
    var bool=true;//通过改变true和false来改变a的粗细
    function func(bool,a){
    if(bool){
    document.write('<b>'+a+'</b>');
    }else{
    document.write(a);
    }
     }
    func(bool,a);
      

  3.   

    最基本的东西,形参和实参,如果这个都不懂就没必要继续了。var a;
    a = 0;
    function func(b){
        //b为形参,改变形参无法做到改变实参。除非实参为对象(按址传递),且此处改变的是对象的某个属性
        b = 1;
        document.write(b);
    }
    document.write(a+"<br>")
    func(a);//a是实参。
    document.write("<br>"+a)按址传递且改变属性(这个例子要求对象必须有个a属性):var a;
    a = {a:1};
    function func(b){
        b.a = 2;
        document.write(b.a);
    }
    document.write(a.a+"<br>")
    func(a);//a是实参。
    document.write("<br>"+a.a)
      

  4.   

    var a;
    a = 0;
    function func(b)
    {
    b = 1;
    }
    document.write(b);纠正一下我的错误,我发现这么写的b不是全局变量,只是个参数而已
      

  5.   

    2楼正解。a是a,b是b,一个是全局变量 一个是func的参数。只不过在给func传实参的时候(即func(a)),此时的传递是值传递,a的值复制了一份赋给了b,因此a和b只不过是具有相同的值0。但是,这是两个彼此独立的0,所以func内对值0(b)的任何操作都不会对外部的0(变量a)有任何影响。