js是只是值传递,你 的array和ar[0]都是全局变量,这样肯定是不可以的

解决方案 »

  1.   

    function f4()
    {
    ar[0] = "changed at f4";} var ar = new Array(1); 
    ar[0]="this is a string."; 
    f4(ar[0]); 
    document.write(ar[0]," <br/>"); </script> 
    在你的方法里给这个全局变量赋值是可以的
      

  2.   

    var ar = new Date();
    这样是可以的,传入的参数是当引用的话就用改变的
      

  3.   

    2楼的连参数都没了,本来就是传参数,
    C++里 f4(&ar) 就会改变的
      

  4.   

    function f4(name){ name = "changed at f4";} 
    这句要怎么理解?我怎么感觉是给局部变量name赋一个changed at f4的字符串啊...
      

  5.   

    <script type="text/javascript"> function f4(name){ name[0] = "changed at f4";} var ar = new Array(1); 
    ar[0]="this is a string."; 
    f4(ar); 
    document.write(ar[0]," <br/>"); </script> 
      

  6.   

    LS的确实能改,不过有些晕了,JS到底是值传递还是引用传递啊?
    LZ说日期能改,但我这样试了下,就是把一个日期给了一个局部变量,全局变量的日期还是没改啊。<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>test</title>
    <script type="text/javascript"> function f4(name){ 
    name = new Date(75, 1, 16);
    alert(name);
    } var ar = new Date(); f4(ar); 
    document.write(ar," <br/>"); </script> 
    </head>
    <body>
    </body>
    </html>
      

  7.   

    其实就是这样
    function f4(name){ name = "changed at f4";} 
    用户传值的name,与方法内的name不是同一个对象,此句可以更改为:
    function f4(name){ var name=name;  name = "changed at f4";} 
    效果与楼上同
      

  8.   

    这不是Array的问题,而是引用和值类型的问题。在JavaScript中,String是值类型,不是引用类型,所以这么写你的f4中相当于执行了 "this is a stirng" = "changed at f4" 这是没有意义的。如果要完成这样的效果,要改写成引用类型,即把数组元素写成对象:
    给你一个参考的方式,你也可以用别的方法来实现:
    <script type="text/javascript">function f4(obj){ obj.text = "f4";}var ar = new Array(1);
    ar[0]={text:"string"};
    f4(ar[0]);
    document.write(ar[0].text," <br/>");</script>
      

  9.   

    楼主传的是arr[0]的值
    加个alert就明白了
    <script type="text/javascript"> function f4(name){
    alert(name); // this is a string.
    name = "changed at f4"; //这里其实是 'this is a string.' = "changed at f4" 和ar没关系
    } var ar = new Array(1); 
    ar[0]="this is a string."; 
    f4(ar[0]); // 这里其实是 f4("this is a string.");
    document.write(ar[0]," <br/>"); 
    </script> 
      

  10.   

    但是如果参数是对象,传的好像就是引用了;
    试一下就知道了,好像除了Object,其他都是值传递;
    <script type="text/javascript"> function f4(name){alert(typeof(name)); name.a="2";} 
    //function f4(name){alert(typeof(name)); name="2";} 
    var obj = new Object();
    obj.a = "1";
    f4(obj); 
    //f4(obj.a); 
    document.write(obj.a," <br/>"); </script>