VBS 函数和过程默认的传递方式

来源:互联网 发布:c语言基础教程电子书 编辑:程序博客网 时间:2024/05/18 12:04

在介绍过程和函数的参数时跳过了一个概念:传址和传值。一个参数是传址还是传值取决于过程或函数定义中的声明。传址的参数用 ByRef 关键字说明,而传值的参数既可以用ByVal 关键字说明也可以不加任何说明——也就是说,没有明确地指定是哪一种的话,ByVal 就是默认值。

只可惜这段文字是错误的,VBS 过程和函数参数传递的方式默认是 ByRef,测试如下:

 

 

[vb] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. Function f(x,y)  
  2.     t = x  
  3.     x = y  
  4.     y = t  
  5. End Function   
  6.   
  7. x = 123  
  8. y = 456  
  9. WSH.Echo x, y  '123 456  
  10.   
  11. x = 123  
  12. y = 456  
  13. f (x), (y)  
  14. WSH.Echo x, y  '123 456  
  15.   
  16. x = 123  
  17. y = 456  
  18. Call f(x,y)  
  19. WSH.Echo x, y  '456 123  
  20.   
  21. x = 123  
  22. y = 456  
  23. Call f((x),(y))  
  24. WSH.Echo x, y  '123,456  
  25.   
  26. x = 123  
  27. y = 456  
  28. z = f(x,y)  
  29. WSH.Echo x, y  '456,123  
  30.   
  31. x = 123  
  32. y = 456  
  33. z = f((x),(y))  
  34. WSH.Echo x, y '123,456  
  35.    


 除了证明 VBS 过程和函数参数传递的方式默认是 ByRef 以外,该脚本还说明了当用括号把表达式括起来的时候,内部会创建一个临时变量来保存括号中表达式的值

0 0
原创粉丝点击