function firstWord (go and run) { let text = "go and run"; let firstBlank = text.substr(0, 2); return firstBlank; }¿Por qué me está dando una respuesta incorrecta? ¿Alguien puede explicar la solución, por favor? insinuación:-
function firstWord(s) { let firstBlank = s.indexOf(' '); return s.substr(0, firstBlank); }Hay varios problemas con su código:
go and run no es una declaración de parámetro válida en el encabezado de la función. Aquí hay confusión con el parámetro y el valor de cadena con el que espera que se llame a la función. En el encabezado de la función, debe enumerar los parámetros con nombres de variables. Dado que la función debe llamarse pasando una cadena, puede nombrar esa variable phrase , text o cualquier otra cosa que sea descriptiva.
let text = "go and run"; no debe aparecer en la función. La función debería funcionar para cualquier cadena, por lo que no debería estar codificada para "ir y ejecutar". La variable de parámetro tendrá la cadena real con la que se llama a la función.
let firstBlank = text.substr(0, 2); se está enfocando nuevamente en una cadena en particular . En realidad, no busca un espacio en absoluto. Usted, como programador, le dice que la primera palabra tiene 2 caracteres. Entonces, su función también podría return "go" . Pero realmente debería admitir cualquier cadena, y luego dejar que el código averigüe qué tan larga es la primera palabra escaneando la cadena en busca del primer espacio o el final de la cadena.
substr (también en el segundo bloque de código) es una función obsoleta. Use slice en su lugar.
El segundo fragmento de código hace el trabajo mejor, pero sigue fallando cuando la cadena dada solo contiene una palabra. En ese caso, devolverá la respuesta incorrecta.
Aquí hay una corrección a esa segunda función, pero usando una variable de parámetro más descriptiva:
function firstWord(text) { let firstBlank = text.indexOf(' '); if (firstBlank == -1) { // There is no space at all -- return the whole string return text; } return text.slice(0, firstBlank); } NB: Es posible usar split un código de solución más corto.