Hola, tengo problemas con el alcance de un if en un módulo de JavaScript. Aquí hay una maqueta de mi código:
module.exports = { caser(nb){ if(0 === 0){ nb = 3+2 } } }La función se llama desde otro archivo JavaScript. Nb, sin embargo, no cambia cuando hago esto. Mi editor (código de estudio visual) marcó nb como no utilizado. Esto probé:
module.exports = { caser(nb){ let number = nb if(0 === 0){ number = 3+2 } } }Esto todavía no parece alterar el valor de nb. ¿Alguien sabe una solución a este problema? Gracias por adelantado.
Reasignar nb (o number ) solo cambiará a lo que apuntan esos nombres de variables en la función actual . Parece que lo que debe hacer es devolver el valor modificado y hacer que el consumidor de la función lo use para reasignar el valor que pasa. Algo así como:
// consumer file: const { caser } = require('./foo'); let nb = 5; nb = caser(nb); module.exports = { caser(nb) { if (0 === 0) { nb = 3 + 2 } return nb; } }La única forma de evitar tener que reasignar el consumidor sería que el consumidor pasara un objeto en su lugar y mutara el objeto.
// consumer file: const { caser } = require('./foo'); const objToPass = { nb: 5 }; caser(objToPass); module.exports = { caser(objToPass) { if (0 === 0) { objToPass.nb = 3 + 2 } } }