¿Cómo puedo imprimir una etiqueta si se llama a la función correspondiente en el archivo console.log. ¿Ahora no está imprimiendo la etiqueta y el resultado? ¿Alguien puede aconsejarme?
let num1 = 100; let num2 = 200; let text = 'add'; calculationOfNumbers(text, num1, num2); function calculationOfNumbers(text, num1, num2) { if (text == 'add') { let label = "Adding"; let result = addFunction(num1, num2); console.log(`This is : ${label}`+result); } else if (text == 'subtract') { let label = "Subtracting"; let result = subtractFunction(num1, num2); console.log(`This is : ${label}`+result); } } function addFunction(num1, num2 ) { let result = parseInt(num1) + parseInt(num2); return result; } function subtractFunction(num1, num2) { let result = parseInt(num2) - parseInt(num1) ; return result; }esas return label, result no hace nada. Es lo mismo que hacer return result . Más información sobre el operador de coma . Todavía no hay un tipo de datos de tupla en JS.
Lo que podrías hacer en su lugar es lo siguiente:
function addFunction(num1, num2, label) { let result = parseInt(num1) + parseInt(num2); return [label, result]; } function calculationOfNumbers(x, num1, num2) { let label, result; if (x == 'add') { [label, result] = addFunction(num1, num2, "adding"); } else if (x == 'subtract') { [label, result] = subtractFunction(num1, num2, "subtracting"); } console.log(`This is : ${label} ${result}`); }es decir, devolver matrices y usar la desestructuración.
O incluso:
function calculationOfNumbers(x, num1, num2) { let result; if (x == 'add') { result = addFunction(num1, num2); } else if (x == 'subtract') { result = subtractFunction(num1, num2); } console.log(`This is: ${label} ${result}`); } function addFunction(num1, num2) { let result = parseInt(num1) + parseInt(num2); return label="adding", result; } function subtractFunction(num1, num2) { let result = parseInt(num2) - parseInt(num1) ; return label="subtracting", result; }(No digo que este sea el mejor enfoque aunque)
Dado que no puede devolver múltiples valores con una declaración de return en JavaScript, una opción que podría usar es devolver un object como este:
let total = 0; let num1 = 100; let num2 = 200; let text = 'add'; let label = ""; calculationOfNumbers(text, num1, num2); function calculationOfNumbers(x, num1, num2) { let info; if (x == 'add') { info = addFunction(num1, num2, "adding"); } else if (x == 'subtract') { info = subtractFunction(num1, num2, "subtracting"); } console.log(`This is ${info.label} : ${info.result}`); } function addFunction(num1, num2, label) { let result = parseInt(num1) + parseInt(num2); return { label, result }; } function subtractFunction(num1, num2, label) { let result = parseInt(num2) - parseInt(num1); return { label, result }; } Observe cómo asigno cada llamada de función a la variable info , luego puede acceder a las propiedades requeridas con info.label e info.results , respectivamente.
hay algunas cosas que deben modificarse en su código
function calculationOfNumbers(x, num1, num2) { if (x == 'add') { // function is returning some values, but it was never stored somewhere to be used later addFunction(num1, num2, "adding"); } else if (x == 'subtract') { // same situation, function is returning some values, but it was never stored somewhere to be used later subtractFunction(num1, num2, "subtracting"); } // you are printing (result) but it was never declared before console.log(`This is : ${label}`+result); } function addFunction(num1, num2, label) { // it's better to use Number(num1) instead of parseInt() let result = parseInt(num1) + parseInt(num2); // you are returning label inside here, however you didn't amend the global variable result, // also no need to pass it down to this function, the add function should be returning only the result of the calculation return label, result; } function subtractFunction(num1, num2, label) { let result = parseInt(num2) - parseInt(num1) ; return label, result; }Entonces, el código después de la modificación debería verse como a continuación:
let num1 = 100; let num2 = 200; let text = 'add'; calculationOfNumbers(text, num1, num2); function calculationOfNumbers(x, num1, num2) { let label = x; let result = 0; if (x == 'add') { result = addFunction(num1, num2); } else if (x == 'subtract') { result = subtractFunction(num1, num2); } console.log(`This is : ${label}` + result); } function addFunction(num1, num2) { let result = Number(num1) + Number(num2); return result; } function subtractFunction(num1, num2) { let result = Number(num2) - Number(num1); return result; }