Curso gratuito de JavaScript. Regístrate para hacer un seguimiento de tu progreso →

JavaScript: Cadena de llamadas

Los números tienen un método que los convierte en una cadena:

const peopleCount = 5;
peopleCount.toString(); // 5

Intenta responder la siguiente pregunta, ¿funcionará el siguiente código y, de ser así, qué imprimirá en la pantalla?

const name = 'Tirion';
console.log(name.length.toString());

La sintaxis de varios puntos seguidos la vemos por primera vez, pero todas las operaciones que aparecen aquí nos son familiares. Todo lo que sucede en este código es la combinación de capacidades ya conocidas del lenguaje. Esto ocurre bastante a menudo en la programación. Incluso sin conocer la sintaxis, se pueden probar diferentes enfoques y hay una buena probabilidad de que funcionen.

La forma más sencilla de entender cómo funciona este código es dividir la cadena en operaciones individuales:

const name = 'Tirion';
const len = name.length;
console.log(len.toString());

Estos ejemplos son completamente equivalentes. Podemos realizar operaciones secuencialmente con la creación intermedia de constantes, o podemos construir una cadena continua de propiedades y métodos. En las cadenas de llamadas, los cálculos siempre se realizan de izquierda a derecha.

Otro ejemplo para reforzar los conocimientos:

const name = 'Tirion';
console.log(name.toUpperCase().toLowerCase());

Este tipo de código requiere un poco de esfuerzo mental. Es importante entender que .toLowerCase() se aplica al resultado de llamar al método que está a la izquierda. Y el método toUpperCase() devuelve una cadena. Los principiantes a menudo cometen errores en las cadenas de llamadas, olvidando poner la llamada:

const name = 'Tirion';
// ¡Este código no funcionará correctamente!
console.log(name.toUpperCase.toLowerCase);

Siguiendo esta idea, es posible construir cadenas infinitamente largas (aunque en este caso, inútiles):

// ¿Cuál es el resultado de esta llamada?
console.log(name.toUpperCase().toLowerCase().length.toString().length);

Con las funciones, este truco no funcionará, ya que en su uso normal se anidan unas dentro de otras f(f(f())), lo que dificulta mucho el análisis. Pero esto no significa que no se pueda hacer de manera elegante, y de hecho, se puede y se debe hacer. En otros lenguajes, esto se logra a través de la composición de funciones o el operador de canalización, que, por cierto, se está comenzando a usar gradualmente en el mismo JavaScript: https://github.com/tc39/proposal-pipeline-operator.

Tarea

Utiliza el método slice() para obtener una parte de la oración almacenada en la constante text, desde el carácter 5 hasta el carácter 15, inclusive. Luego, procesa la subcadena obtenida con el método .trim() y muestra en pantalla la longitud de la subcadena resultante. Realiza estos métodos en cadena sin crear variables intermedias.

¿El ejercicio no pasa la prueba, qué debo hacer? 😶

Si te quedaste atascado, es el momento perfecto para hacer una pregunta en las "Discusiones".
* Asegúrate de incluir la salida de las pruebas. Sin ella, es casi imposible entender qué está mal, incluso si muestras tu código. Los programadores tienen dificultades para ejecutar el código en su mente, pero casi siempre es posible entender a dónde mirar a partir del error que recibiste.

Mi código funciona en mi entorno, pero no aquí 🤨

Las pruebas están diseñadas de manera que verifican la solución de diferentes maneras y con diferentes datos. A menudo, una solución funciona con ciertos datos de entrada pero no con otros. Para entender este punto, revisa la pestaña "Pruebas" y presta atención a los mensajes de error, que suelen contener pistas.

Mi código es diferente a la solución del profesor 🤔

Esto es normal 🙆. En programación, una tarea puede tener muchas soluciones diferentes. Si tu código pasa la prueba, cumple con los requisitos de la tarea.

En raras ocasiones, la solución puede estar ajustada para pasar las pruebas, pero esto suele ser evidente.

Leí la lección, pero no entendí nada 🙄

Crear materiales de aprendizaje comprensibles para todos es bastante difícil. Hacemos nuestro mejor esfuerzo, pero siempre hay margen para mejorar. Si encuentras material que no entiendes, describe el problema en las "Discusiones". Es ideal si puedes formular los aspectos que no entiendes en forma de preguntas. Por lo general, necesitamos unos días para hacer mejoras.

Por cierto, tú también puedes contribuir a mejorar los cursos: en la parte inferior hay un enlace al código fuente de las lecciones, que se puede modificar directamente en el navegador.

Definiciones


¿Encontraste un error? ¿Quieres añadir algo? Las solicitudes de extracción son bienvenidas. https://codica.la/errores
El reactor de código está disponible en la versión principal →