Existen varias formas de devolver valores múltiples en JavaScript. Siempre has sido capaz de devolver múltiples valores en una matriz:
function f() {
return [1, 2];
}
y acceder a ellos de esta manera:
var ret = f();
document.write(ret[0]); // first return value
embargo, la sintaxis es mucho más agradable en JavaScript 1.7 con la adición de asignación desestructurada (Si tienes la suerte de tener como objetivo un ambiente garantizado para apoyarlo (por ejemplo, una extensión de Firefox)):
var a, b;
[a, b] = f();
document.write("a is " + a + " b is " + b + "<br>\n");
Otra opción es devolver un objeto literal que contiene se valores de r:
function f() {
return { one: 1, two: 2 };
}
que luego se puede acceder por nombre:
var ret = f();
document.write(ret.one + ", " + ret.two);
Y, por supuesto, se podría hacer algo realmente horrible como modificar el alcance global o propiedades incluso ajustado en la función propia:
function f() {
f.one = 1;
f.two = 2;
}
f();
document.write(f.one + ", " + f.two);
Más lectura (y la fuente de algunos de estos ejemplos):
https://developer.mozilla.org/en/New_in_JavaScript_1.7#Destructuring_assignment_(Merge_into_own_page.2fsection)
Así que algo así como pasar por referencia? – kjy112
Creo que algo así como devolver una matriz asociativa sería el camino de JavaScript a seguir, pero si intentas replicar pasar por referencia, esto podría ser interesante: http://sirdarckcat.blogspot.com/2007/07/ passing-reference-to-javascript.html – kloffy
@kloffy esa publicación del blog está llena de errores y malentendidos. No confiaría en ella para nada – Pointy