变了啊
var k=2;
function explus(){
  k=k+1;
  alert(k);
}
explus();
alert(k);  //弹出什么

解决方案 »

  1.   

    是一模一样啊,其他的都不关事的,都是html代码单独运行都是正常的,这个不用列入考虑!
    你要搞清楚我的问题!!!我问的是改变全局变量的方法,我只要改变全局变量!!vbscript中可以传值方式和传值方式byval、byref,javascript中要从函数改变全局变量用什么方法?
      

  2.   

    byval在vbscript中是用作传值方式,把原值复制一份原本的全局变量不想被改变就用这种传值,否则用传址。
    不过javascript中的就不知道了,我也是javascript的初学者
      

  3.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title> New Document </title>
      <meta name="Generator" content="EditPlus">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
     </head> <body>
    <script type="text/javascript">
    <!--
    var k=2;
    function explus(){
    k=k+1;
    alert(k);
    }
    explus();
    alert(k); //弹出什么
    //-->
    </script>
     
     </body>
    </html>
    把这段代码你去运行一下,绝对是:3
      

  4.   

    废话,你前面几楼的话没看吗?都说了弹出肯定是3了,函数让k的值增加1,其中这个k是传址方式的,即复制一份k的值,原先的全局变量没有被改变
      

  5.   

    javascript里本来就只有值传递,又何来应用传递,首先传递引用同引用传递是不同的,更何况字符串只保存在栈内存里,基本类型的赋值都是独立拷贝出来的,不同对象的应用赋值指向同一个对象
      

  6.   

    <script type="text/javascript">
    var k=2;
    function cc(x){
    x+=1;
    alert("inner"+x);//3
    }
    cc(k);
    alert("outer"+k);//2
    </script>
    首先不明白楼主的意思   不过看来看去说什么传值传址的  貌似你的函数什么都没传啊   此时改变的当然是全局的k了 你把k传进去之后再在外部调   传值不能改变原来的值  传进去的也只是原来值的副本  java和javascript应该是这样  其他的不知道了  
    本人菜鸟  不对勿喷
      

  7.   

    <script type="text/javascript">
    var k=[];
    k[0]=2;
    function cc(x){
    x[0]+=1;
    alert("inner"+x[0]);//3
    }
    cc(k);
    alert("outer"+k[0]);//3
    </script>
    这样才类似与传址  基本类型的变量只会传值  引用变量才会传址  有些语言只有传值 但对引用变量也会起到传值的作用
    还是那句话   本人菜鸟   不对勿喷