👨🏼‍💻

khriztianmoreno's Blog

Inicio Etiquetas Acerca |

Encuentra el Bug - N_01

Publicado en 2025-01-10
Actualizado en 2025-01-10
Actualizado en 7 días Con licencia bajo MIT spot-the-bugchallenge

¿Te consideras un detective de código? ️‍👩🏻‍💻🐛👨🏼‍💻 Tenemos un pequeño misterio por resolver. Este fragmento de JavaScript parece funcionar perfectamente, pero esconde un bug bastante peculiar.

¿Puedes averiguar qué está pasando y por qué el resultado no es el esperado?

¡Acepta el desafío y pon a prueba tus habilidades de programación!

function reverseString(str) {
  return str.split("").reverse().join("");
}

const reversedString = reverseString("Hello, 👋!");
console.log(reversedString);

Recuerda, la satisfacción de resolver un problema por ti mismo no tiene precio. Intenta investigar y resolverlo antes de ver la respuesta.

🚀 Solución 👩🏻‍💻🐛👨🏼‍💻

Este bug ocurre porque el método split trata la cadena como un array de unidades de 16 bits, no como un array de caracteres, resultando en una salida inesperada: !�� ,olleH.

Al usar Array.from(str) o [...str], la cadena se divide en un array de caracteres reales, respetando los pares sustitutos.

Usando Array.from:

function reverseString(str) {
  return Array.from(str).reverse().join("");
}

const reversedString = reverseString("Hello, 👋!");
console.log(reversedString);

Usando el operador de propagación:

function reverseString(str) {
  return [...str].reverse().join("");
}

const reversedString = reverseString("Hello, 👋!");
console.log(reversedString);

Espero que te haya sido útil y/o te haya enseñado algo nuevo

Profile

@khriztianmoreno 🚀