ASP byval byref 区别

来源:互联网 发布:启发式算法 编辑:程序博客网 时间:2024/04/28 12:49

1、ByVal传值:一种将参数值而不是将地址传递给过程的方式,这就使过程访问到变量的复本。结果,过程不可改变变量的真正值。
2、ByRef传值:一种将参数地址而不是将值传递给过程的方式,这就使过程访问到实际的变量。结果,过程可改变变量的真正值。除非另作说明,否则按地址传递参数。 
3、系统默认的是ByRef传值。

例子:
<SCRIPT  LANGUAGE="vbScript"> 
  dim  a 
  a=0 
  document.write  "a=0" 
  document.write  "<br/>sub  change(byref  ar)<br/>" 
  change  a   
  document.write  a 
  a=0 
 
  document.write  "<br/>sub  change2(ByVal  ar)<br/>" 
  change2  a   
  document.write  a 
  a=0 
 
  document.write  "<br/>sub  change3(  ar)<br/>" 
  change3  a   
  document.write  a 
  a=0 
 
  document.write  "<br/>function  change4(byref  ar)<br/>" 
  change4  a   
  document.write  a 
  a=0 
 
  document.write  "<br/>function  change5(ByVal  ar)<br/>" 
  change5  a   
  document.write  a 
  a=0 
 
  document.write  "<br/>function  change6(  ar)<br/>" 
  change6  a   
  document.write  a 
  a=0 
 
  sub  change(byref  ar) 
  ar=111 
  end  sub 
 
  sub  change2(ByVal  ar) 
  ar=222 
  end  sub 
 
  sub  change3(  ar) 
  ar=333 
  end  sub 
 
  function  change4(byref  ar) 
  ar=444 
  end  function 
 
  function  change5(ByVal  ar) 
  ar=555 
  end  function 
 
  function  change6(  ar) 
  ar=666 
  end  function 
 
  </SCRIPT>
=======================
结果:

a=0 
  sub  change(byref  ar) 
  111 
  sub  change2(ByVal  ar) 
  0 
  sub  change3(  ar) 
  333 
  function  change4(byref  ar) 
  444 
  function  change5(ByVal  ar) 
  0 
  function  change6(  ar) 
  666 
 
  说明vbs默认是byRef,这点和VB一样,  按地址。