Soy un nuevo aprendiz de JavaScript, y cuando llego a aprender la forma de usar una función. A veces me confunde por qué debemos declarar una nueva variable y agregar la variable a la acción que queremos ejecutar. Echemos un vistazo al código.
function reverse(word){ Array.from(word); let reverseWord=''; for(i = word.length-1; i >= 0; i--) { reverseWord += word[i]; } return reverseWord; }Estoy seguro de que conoces esta forma de invertir cadenas en javascript, mi pregunta es:
¿Por qué necesitamos declarar una nueva variable dentro de la función, cuándo debemos declararla?
¿Por qué no puedo simplemente escribir console.log(word[i]); ?
¿Qué significa wordLength+=word[i]; ?
¿Por qué deberíamos devolver la nueva variable (wordLength), en lugar de la función (reverse) después del bucle?
¿Por qué necesitamos declarar una nueva variable dentro de la función...
Porque necesita un lugar para almacenar la palabra invertida a medida que la construye. (Nota: wordLength no es un buen nombre para esa variable. No contiene la longitud de la palabra. Contiene los caracteres de la palabra invertida).
...¿cuándo debemos declararlo?
En cualquier momento antes de que lo necesite por primera vez.
¿Por qué no puedo simplemente escribir console.log(word[i]);?
Porque el objetivo del ejercicio es construir una cadena que contenga la palabra invertida, no solo generarla. (Y porque console.log escribe una nueva línea cada vez que lo llama).
¿Qué significa wordLength+=word[i];?
Eso agrega el carácter en word[i] al final de wordLength . Por ejemplo, si la palabra es "start", wordLength comienza con "" , luego se le agrega "t" para convertirla en "t" , luego se le agrega "r" para convertirla en "tr" , y así sucesivamente. .
( += es una forma abreviada de escribir wordLength = wordLength + word[i]; . Hay varios de estos operadores de asignación compuestos , la mayoría de ellos para matemáticas: -= , *= , etc.)
Nota al margen: la llamada Array.from en su código no está haciendo nada útil. Está creando una matriz, pero luego tirando esa matriz porque nada usa el valor de retorno. El resto del código usa la cadena que recibe en word .
¿Por qué necesitamos declarar una nueva variable dentro de la función, cuándo debemos declararla?
Vars es un lugar para almacenar datos. Si su algoritmo requiere mantener algunos datos para usarlos más tarde, necesita vars. También las variables bien nombradas son una buena manera de crear código fácil de entender.
¿Por qué no puedo simplemente escribir console.log(word[i]);?
Puedes, pero no servirá de nada. Su objetivo es construir una cadena y devolverla. El uso de su función será algo así como
const word = getSomeText() const reversedText = reverse(word) doSomeStuff(reversedText) // whatever, send it online, or render it on screen some fancy way, not in the console.Por lo tanto, debe devolver la cadena real, no para resolver un rompecabezas y mostrar la respuesta de la forma que desee.
¿Por qué deberíamos devolver la nueva variable (wordLength), en lugar de la función (reverse) después del bucle?
Porque contiene una palabra invertida y se supone que debes devolverla. hay raras ocasiones complicadas en las que una función que se devuelve a sí misma es útil, pero no tiene nada en común con su tarea
¿Por qué necesitamos declarar una nueva variable dentro de la función, cuándo debemos declararla?
Se requiere una variable para almacenar el valor de los datos que se puede cambiar más adelante. En su caso, se requiere la variable wordLength para almacenar la cadena inversa.
Es mejor declarar las variables cuando las use por primera vez para asegurarse de que siempre se inicialicen con algún valor válido.
¿Por qué no puedo simplemente escribir console.log(palabra[i])
console.log() se usa solo para imprimir la salida, pero no se usará si desea devolver algo y, según su declaración, solo imprimirá la word[i] no una cadena inversa completa.
¿Qué significa wordLength+=word[i]
Significa que está concatenando la word[i] de cada iteración en una variable wordLength .
wordLength+=word[i] es una forma abreviada de wordLength = wordLength + word[i] . Si el lado izquierdo del operador + es una cadena, JavaScript convertirá el lado derecho en una cadena.
¿Por qué deberíamos devolver la nueva variable (wordLength), en lugar de la función (reverse) después del ciclo?
Porque esto es lo que esperabas de la función. Devuelve la cadena reversed y la función debería devolverla.