Me encontré con esto lo suficiente como para preguntar: ¿es malo tener parámetros con el mismo nombre que una variable en el ámbito externo? Esto sucede mucho cuando escribo en React o Svelte donde el estado del componente es el nombre que quiero usar en la función. A continuación hay un código que acabo de escribir en Svelte donde me encuentro con esto. Entiendo que funciona, pero realmente no me gusta. Creo que también se rompería si necesitara modificar la función para usar el estado en el ámbito externo. Cualquier indicador será de ayuda. Gracias.
// global state named `files` let files: File[] = []; // also wanted to use `files` as a param name but couldn't function handleFilesChange(uploadedFiles: File[]) { files = sortFilesChronologically(files, "desc"); } // using `files` as a param name function sortFilesChronologically(files: File[], direction: "asc" | "desc" = "asc") { return [...files].sort((file1, file2) => { const file1Time = new Date(file1.lastModified).getTime(); const file2Time = new Date(file2.lastModified).getTime(); const dirModifier = direction === "asc" ? 1 : -1; return dirModifier * (file1Time - file2Time); }); }Puede causar confusión y errores innecesarios, pero las herramientas pueden ayudar a evitar que esto suceda o diferenciar el estado de los argumentos. ESLint ya fue mencionado en ese sentido.
Si una función no depende de la reactividad del estado, puede considerar extraerla a un archivo separado donde no se produzca el sombreado.
Usar prefijos como lo hizo con handleFilesChange para separar los nombres también es siempre una opción. A menudo uso new , old , current y similares.
Creo que también se rompería si necesitara modificar la función para usar el estado en el ámbito externo.
Primero tendría que cambiar el nombre del parámetro de la función, que debería ser una simple operación de refactorización.