/ / ¿Cómo hago para que esta sencilla función de JavaScript? - javascript, función

¿Cómo hago esta simple función javascript? - javascript, función

Tengo tres variables

var r1 = 12;
var r2 = "";
var r3;

Necesito hacer una función convert() con tres parámetros como tal:

function convert(arg1, arg2, arg3) {
// function body here
}

tal que después de ejecutar este código

convert(r1, r2, r3)
console.log(r1, r2, r3)

Debería obtener la salida:

r2, "empty string", "undefined value"

Es decir, debe cambiar los valores de r1, r2 y r3 a los valores anteriores.

Código que probé:

function convert(arg1, arg2, arg3) {
if (arg2 === "") {
arg2 = "empty string";
}
if (arg3 === undefined) {
arg3 = "undefined value";
}
}

y luego llamar convert(r1, r2, r3) falla (¡obviamente!) debido a que los argumentos se pasan como valores. Pero necesito saber, ¿hay alguna forma de hacer que esta función funcione? Además, he visto esta pregunta, así que sé cómo se pasan, pero aún así, ¿hay alguna manera de que esto funcione?

Respuestas

0 para la respuesta № 1

Podría hacer algo como esto, pero lo más probable es que algo esté defectuoso con su lógica.

function convert(arr) {
for (var i = 0, l = arr.length; i < l; i++) {
// do your stuff here on arr[i]
}
return arr;
}

var a = convert([r1, r2, r3]);
//a now holds the right values, do whatever you want with them
//you can even load them back to the variables if that"s what you really want
//r1 = a[0]; etc.

No sé cuál es la razón para hacer esto, donde desea utilizar estos nuevos valores, pero sería más inteligente escribir la función de conversión para un solo valor, y llamarlo cuando sea necesario.

function convert(val) {
if (val === "") {
return "empty string";
}
if (typeof val === "undefined") {
return "undefined value";
}
return val;
}

console.log(convert(r1));

0 para la respuesta № 2

No puede hacer esto en JavaScript. No tiene una semántica de paso por referencia.

Puede usar un objeto intermedio para esto, pero parece que no es lo que está buscando:

var data = {r1: 12, r2: "", r3: undefined};
function convert(data, field1, field2, field3) {
// …
}

0 para la respuesta № 3

En el caso poco probable de que solo desee convertir variables globales, simplemente puede pasar los nombres de esas variables:

function convert(arg1, arg2, arg3) {
if (window[arg2] === "") {
window[arg2] = "empty string";
}
if (window[arg3] === undefined) {
window[arg3] = "undefined value";
}
}

var r1 = 12;
var r2 = "";
var r3;
convert("r1", "r2", "r3");
console.log(r1, r2, r3);

-1 para la respuesta № 4

código de trabajo: active la función de ejecución en el evento que necesita


function execute(){
var r1 = 12;
var r2 = "";
var r3;
convert(r1,r2,r3);
}

function convert(arg1, arg2, arg3) {
if (arg2 === "") {
arg2 = "empty string";
}
if (arg3 === undefined) {
arg3 = "undefined value";
}

console.log(arg1,arg2,arg3);
//    console.log(arg2);
//    console.log(arg3);

}