Quiero cambiar la variable de valor en un index.js en otro archivo, pero no puedo hacerlo y este es mi ejemplo de código
índice.js
var length = 0; client.commands.get('join').excute(length);otroarchivo.js
module.exports = { name: 'join', description: "", excute(length){ length++; }la longitud en index.js es + 1 = 2, pero la longitud en anotherfile.js no lo es
Importé otro archivo.js a index.js
Entonces, ¿cómo puedo cambiar el valor en la variable de longitud?
Muchas gracias y perdón por mi mal inglés.
No funciona porque JavaScript no pasa variables con tipos de datos primitivos, como un número entero, a través de su referencia a otras funciones, sino que crea una variable completamente nueva con una dirección de memoria diferente. La única forma en que puede mutar la ubicación de la memoria original es si está pasando una matriz u objeto, que JavaScript luego pasará en un puntero a la ubicación de la memoria original, es decir, "referencia", a la función.
Por lo tanto, tendría que cambiar el tipo de datos de length a un objeto y agregar el valor/longitud del objeto como propiedad. La función de excute simplemente accedería a esa propiedad y la incrementaría así:
índice.js :
const obj = { length: 0 } client.commands.get('join').excute(obj);otroArchivo.js :
module.exports = { name: 'join', description: "", excute(obj){ obj.length++; } }Tenga en cuenta que debe pasar el objeto completo; de lo contrario, si solo pasa obj.length, simplemente copiará el valor y creará una variable completamente nueva establecida en ese valor.