Click here to Skip to main content
13,147,183 members (29,574 online)
Click here to Skip to main content
Add your own
alternative version


18 bookmarked
Posted 6 Aug 2005

Passing function arguments as parameters in JavaScript

, 6 Aug 2005
Rate this:
Please Sign up or sign in to vote.
If you're in need of C-like input/output parameters or VB-like "by reference" function arguments in JavaScript, here's some help.


When used as function arguments in JavaScript, number and string objects are compared by value, and functions are compared by reference... array objects (arrays) seem to be the only option for passing arguments by reference, so we'll simply wrap an array of size 1 into a new object class that sets/gets the first element:

function param()
    this.array = new Array(1);

    this.setValue = function(v) { this.array[0] = v; }
    this.getValue = function()  { return this.array[0]; }

It's a simple object with a 1-element internal array that will hold anything (even an object reference), exposing two simple assignment and retrieval methods.

You would typically use it in situations where you need more than one return value.

// declare a variable as a parameter
var s = new param;

// issue a function call using the parameter
var o = output(dText.innerHTML, s, 'Hello, world.');

// the function is obviously designed to treat the 2nd argument as a parameter...
function output(arg1, arg2, arg3)
  // that eventually it can assign a value to it.
  arg2.setValue(a + b % 10);

// when ready to retrieve the output value, use the retrieval function.
dResult.innerHTML += s.getValue() + ' (' + o + ')';

And that's it. You can declare and pass-in as many parameters as you like, as long as your code handles them through the member functions; you can also use the internal array property if you need to handle the argument as an array, say to concatenate with other arrays, etc.

Why not use a one-sized array directly? Good, valid question. Actually, I just wanted to improve the code's readability, and this looked better than handling the 0th element around in functions. Maybe it's a waste of time, but hey, I'm into the "slow down" way of things now.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

hector [.j.] rivas
Software Developer (Senior) Code Authority, Inc.
United States United States
Pride in craftsmanship is my new thing.

You may also be interested in...

Comments and Discussions

GeneralAwful Pin
Anonymous10-Aug-05 6:27
sussAnonymous10-Aug-05 6:27 
GeneralRe: Awful Pin
Tor2k10-Aug-05 6:37
memberTor2k10-Aug-05 6:37 
GeneralRe: Awful Pin
Sebastian Streiger14-Nov-05 8:51
memberSebastian Streiger14-Nov-05 8:51 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.170915.1 | Last Updated 6 Aug 2005
Article Copyright 2005 by hector [.j.] rivas
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid