This section provides a tutorial example on how to pass arguments by value to swap values passed through procedure arguments. By this example will not work.
To see how passing arguments by value works, I wrote the following example, function_swap_by_val.html:
<html>
<body>
<!-- function_swap_by_val.html
- Copyright (c) 2015, HerongYang.com, All Rights Reserved.
-->
<pre>
<script language="vbscript">
document.writeln("")
document.writeln("Test 1: Swapping two literals by value")
document.writeln(" Before Sub: " & "Apple" & " | " & "Orange")
Call SwapByVal("Apple", "Orange")
document.writeln(" After Sub: " & "Apple" & " | " & "Orange")
vFirst = "Dog"
vSecond = "Cat"
document.writeln("")
document.writeln("Test 2: Swapping two variables by value")
document.writeln(" Before Sub: " & vFirst & " | " & vSecond)
Call SwapByVal(vFirst, vSecond)
document.writeln(" After Sub: " & vFirst & " | " & vSecond)
Sub SwapByVal(ByVal vLeft, ByVal vRight)
vTemp = vLeft
vLeft = vRight
vRight = vTemp
document.writeln(" In Sub: " & vLeft & " | " & vRight)
End Sub
</script>
</pre>
</body>
</html>
Here is the output:
Test 1: Swapping two literals by value
Before Sub: Apple | Orange
In Sub: Orange | Apple
After Sub: Apple | Orange
Test 2: Swapping two variables by value
Before Sub: Dog | Cat
In Sub: Cat | Dog
After Sub: Dog | Cat
Here are my notes about this example:
Test 1 is useless.
Test 2 shows that "ByVal" arguments will not bring any changes back to the calling code.
After the subroutine call, values in vFirst and vSecond have not been changed at all.