1.<script language="javascript">
  function abc(y)

     var z;
     z=y+10;
}
x=13;
abc(x);
alert(z);
</script>如果abc函数中使用了var z定义z,则不会执行,除非去掉var z,为什么啊`?不能定义一下z吗?2.<script language="javascript">
  function abc(x)

     x=5
}
x=13;
abc(x);
alert(x);
</script>为什么执行结果是13,而不是5啊?刚学习JS,谢谢大家啦``

解决方案 »

  1.   

    我也是菜鸟阿.只进来学学.
    x=13
    abc(x)
    就相当于abc(13)
    所以alert的结果就是13
      

  2.   

    但是他作为参数传递给abc函数了啊``
      

  3.   

    <script language="javascript">
      function abc(y)

      var z;
      z=y+10;
    }
    x=13;
    abc(x);
    alert(z);
    </script>你用了 var 就是声明一个局部变量啊
    函数外面当然看不到了  function abc(x)

      x=5
    }
    x=13;
    abc(x);
    alert(x);
    </script
    这个做法没社么意义啊改成  function abc()

      x=5
    }
    x=13;
    abc();
    alert(x);就是5了
      

  4.   

    但是书上说的是如果你没有用var声明一个变量,而直接使用一个变量的时候,系统会自动帮你声明此变量.  难道用VAR和直接使用是不一样的吗?
      

  5.   

    函数调用的时候,参数是传值(by value)还是传引用(by reference)是有区别的,传值不影响原变量,传引用原变量可能会被函数内的语句重新赋值。这在其它语言里,两个概念都是可以做到的,js语言比较简单,凡是传原始类型的参数,都默认传值,传自定义的对象,都默认传引用。所以,你传的x,其实是x的一份拷贝。不影响原x的值。
      

  6.   

    第一问,其实是更基本的问题。js里,变量必须先定义而后再使用,同时var关键字定义的变量,其作用范围局限于当前作用于,不用var关键字定义变量,则是全局变量。把函数两句都注释掉,可见下面的的z没有定义,所以是编程错误。把函数第一句注释掉,第二句对z的赋值的同时也定义了一个全局的z,所以,程序没有错。把第一句留下,则成了定义了一个本地的z,而后对这个本地的z赋值,但函数体外的z仍然是没有定义,所以是程序错误。
      

  7.   


    基本上就是这个意思第二问你明明就在外面声明的变量x啊
    你函数里的x只是传进来的参数而已。另外纠正上面一楼的错误说法
    在js中{}里面不代表是局部变量 只有函数是最基本的模块,那么只有在函数体内声明的变量才是局部的,但是如果不使用var来声明的话,依然是全局的。而类似for if的{}里是没有局部作用域的。
      

  8.   


    这个会不会是全局变量和局部变量的问题。<script language="javascript">
      function abc(x) //这个参数x 跟下面x =5 和 方法外边的x=13这个x不是同一个变量,所以最后alert(x)只是将方法外边的x的值打印出来
    {  
      x=5
    }
    x=13;
    abc(x);
    alert(x);
    </script>
      

  9.   

    <script language="javascript">
      function abc(x) //这个参数x 跟下面x =5 和 方法外边的x=13这个x不是同一个变量,所以最后alert(x)只是将方法外边的x的值打印出来
    {  
      x=5
    }
    x=13;
    abc(x);
    alert(x);
    </script>abc(x),只是重新生成了一个对象,而x的值依旧为13,所以alert(x),当然是13了