JavaScript Tutorials - Herong's Tutorial Examples - 2.33, by Herong Yang
Function Parameters Are Passed as Local Copies - Example
This section provides a tutorial example on swapping original primitive and object variables in a function.
To prove that JavaScript function always create local copies for object parameters, I wrote the following tutorial example to try to swap two objects:
<html> <!-- Swap_Function.html Copyright (c) 2008 HerongYang.com. All Rights Reserved. --> <head><title>Swap Function</title></head> <body> <pre> <script type="text/javascript"> // Defining a swap function function swap(left, right) { var temp = left; left = right; right = temp; document.write(" Inside swap(): "+left+" | "+right+"\n"); document.write(" Type of argument: "+(typeof left)+"\n"); } var first = "Dog"; var second = "Cat"; document.write("\nTest 1: Swapping two string variables\n"); document.write(" Before call: "+first+" | "+second+"\n"); swap(first,second); document.write(" After call: "+first+" | "+second+"\n"); var one = new String("White"); var two = new String("Black"); document.write("\nTest 2: Swapping two string objects\n"); document.write(" Before call: "+one+" | "+two+"\n"); swap(one,two); document.write(" After call: "+one+" | "+two+"\n"); </script> </pre> </body> </html>
The output shows that function parameters are always passed as local copies of original variables:
Test 1: Swapping two string variables Before call: Dog | Cat Inside swap(): Cat | Dog Type of argument: string After call: Dog | Cat Test 2: Swapping two string objects Before call: White | Black Inside swap(): Black | White Type of argument: object After call: White | Black
There is no way to swap two original variables in a function, no matter if they are primitive variables or object variables.
Table of Contents
ECMAScript Language Specification and JavaScript Dialects
Data Types, Variables and Expressions
Creating, Accessing, and Manipulating Arrays
►Defining and Calling Functions
Defining Your Own Functions - Example
Calling Your Own Functions - Example
Passing Parameters by Value or by Reference
Function Parameters Are Passed as Local Copies
►Function Parameters Are Passed as Local Copies - Example
Global and Local Variables - Scope Rules
Collision of Global and Local Variables - Examples
"return" Statement and Return Value
Web Browser Supporting JavaScript
Server-Side and Client-Side Web Scripting
Defining Your Own Object Types
Inheritance of Properties and Methods through the Prototype Object Chain
'jrunscript' - JavaScript Shell Command from JDK
Using Functions as "Function" Objects
Introduction to Built-in Object Types
W3C's Document Object Model (DOM) Specifications