- 1 1. Introducción
- 2 2. Información básica y uso de cada método
- 3 3. Tabla comparativa de cada método
- 4 4. Ejemplos de código prácticos
- 5 5. Cómo manejar métodos depreciados
- 6 6. Preguntas frecuentes (FAQ)
- 6.1 Q1: ¿Puedo seguir usando substr?
- 6.2 Q2: ¿Cuál es la diferencia entre slice y substring?
- 6.3 Q3: ¿Cuáles son los riesgos de seguir usando métodos obsoletos?
- 6.4 Q4: ¿Qué método es mejor para cadenas largas?
- 6.5 Q5: ¿Cómo puedo contar hacia atrás usando valores negativos?
- 6.6 Q6: ¿Hay diferencias de rendimiento?
- 7 7. Resumen y Mejores Prácticas Recomendadas
- 8 8. Enlaces y Referencias Relacionadas
1. Introducción
JavaScript es un lenguaje de programación esencial en el desarrollo web. En particular, la manipulación de cadenas se utiliza con frecuencia para formatear datos, realizar análisis y actualizar la interfaz de usuario de forma dinámica.
En este artículo explicaremos en detalle tres métodos de cadena de JavaScript muy usados: substr, substring y slice. Dado que estos métodos ofrecen funcionalidades similares, comprender sus diferencias te ayudará a elegir el adecuado para cada situación.
También analizaremos por qué substr ha sido depreciado y ofreceremos enfoques alternativos, proporcionando consejos prácticos para escribir JavaScript siguiendo las mejores prácticas actuales.
2. Información básica y uso de cada método
Esta sección describe la sintaxis básica y el uso de substr, substring y slice. Entender estos métodos te permitirá seleccionar el más apropiado y mejorar la legibilidad y mantenibilidad del código.
2.1 Método substr
Sintaxis:
string.substr(start, length)
Descripción:
start: Índice inicial para la extracción (basado en cero).length: Número de caracteres a extraer. Si se omite, la extracción continúa hasta el final de la cadena.
Ejemplo de uso:
let str = "JavaScript";
console.log(str.substr(0, 4)); // Output: "Java"
console.log(str.substr(4, 6)); // Output: "Script"
Nota:
El método substr está depreciado, y se recomienda evitar su uso en código futuro. Utiliza slice o substring en su lugar.
Ejemplo alternativo (usando slice):
let str = "JavaScript";
console.log(str.slice(0, 4)); // Output: "Java"
console.log(str.slice(4)); // Output: "Script"
2.2 Método substring
Sintaxis:
string.substring(start, end)
Descripción:
start: Índice inicial de la extracción.end: Índice final (el carácter en este índice no se incluye).
Ejemplo de uso:
let str = "JavaScript";
console.log(str.substring(0, 4)); // Output: "Java"
console.log(str.substring(4, 10)); // Output: "Script"
Puntos a considerar:
- El orden de los argumentos se corrige automáticamente: Si llamas a
substring(10, 4), se interpretará comosubstring(4, 10). - Los valores negativos se ignoran: Cualquier argumento negativo se trata como 0.
Ejemplo alternativo cuando se necesitan valores negativos (usando slice):
let str = "JavaScript";
console.log(str.slice(-6)); // Output: "Script"
2.3 Método slice
Sintaxis:
string.slice(start, end)
Descripción:
start: Índice inicial de la extracción.end: Índice final (el carácter en este índice no se incluye).
Ejemplo de uso:
let str = "JavaScript";
console.log(str.slice(0, 4)); // Output: "Java"
console.log(str.slice(-6)); // Output: "Script"
Puntos a considerar:
- Admite valores negativos: Los índices negativos cuentan desde el final de la cadena.
- Funciona tanto con cadenas como con arreglos: También puede extraer elementos de arreglos, lo que lo hace muy versátil.

3. Tabla comparativa de cada método
| Method | Start Position | End Position | Negative Values | Recommendation Level |
|---|---|---|---|---|
substr | Required | Length-based | × | Deprecated |
substring | Required | Required | × | High |
slice | Required | Required | ○ | Highly Recommended |
Elección del método adecuado según el caso de uso:
- Extracción de segmentos cortos: →
slice - Cuando se requieren valores negativos: →
slice - Compatibilidad con código heredado: → Evitar
substr; migrar según sea necesario
4. Ejemplos de código prácticos
Manipulación básica de cadenas
let text = "JavaScriptProgramming";
// Extract the first 10 characters
console.log(text.slice(0, 10)); // "JavaScript"
// Extract the last 3 characters
console.log(text.slice(-3)); // "ing"
Extracción de valores basados en un patrón
let url = "https://example.com/index.html";
// Get the file name
console.log(url.slice(url.lastIndexOf("/") + 1)); // "index.html"
5. Cómo manejar métodos depreciados
El método substr de JavaScript está depreciado. Esto se debe a que substr ha sido clasificado como un método no recomendado en las últimas especificaciones de ECMAScript.
Esta sección explica los problemas asociados a substr, los métodos alternativos y cómo migrar tu código.
5.1 ¿Por qué substr está obsoleto?
- Legibilidad deficiente:
substrusa el segundo argumento como el “número de caracteres a extraer,” lo cual difiere de otros métodos que usan un índice final. Esta inconsistencia dificulta la comprensión del código.
- Posibles problemas de compatibilidad futura debido a cambios en la especificación:
- Las características más antiguas se marcan como obsoletas durante la estandarización de ECMAScript. El código nuevo no debería depender de ellas.
- Sin soporte para valores negativos:
substrno admite índices negativos, mientras queslicesí.
5.2 Cómo migrar a métodos modernos
Caso 1: Extraer una subcadena de longitud fija
// Deprecated code
let str = "JavaScript";
console.log(str.substr(0, 4)); // "Java"
// Recommended (slice)
console.log(str.slice(0, 4)); // "Java"
Caso 2: Extraer el final de una cadena
// Deprecated code
console.log(str.substr(-6)); // Error (negative not supported)
// Recommended (slice)
console.log(str.slice(-6)); // "Script"
Caso 3: Extraer parte de una URL o nombre de archivo
let url = "https://example.com/index.html";
// Deprecated code
let filename = url.substr(url.lastIndexOf("/") + 1);
console.log(filename); // "index.html"
// Recommended (slice)
let filenameNew = url.slice(url.lastIndexOf("/") + 1);
console.log(filenameNew); // "index.html"
5.3 Puntos de refactorización para código heredado
- Realizar un escaneo de código:
- Utiliza herramientas como ESLint para detectar dónde se usa
substr.
- Fortalecer la cobertura de pruebas:
- Usa pruebas unitarias para asegurar que el comportamiento sigue siendo correcto después de reemplazar los métodos.
- Migrar gradualmente:
- Prioriza el reemplazo en secciones importantes o de ejecución frecuente.
5.4 Beneficios de migrar lejos de substr
- Mejora de la legibilidad y mantenibilidad:
- La intención del código se vuelve más clara, mejorando la comprensión del equipo.
- Compatibilidad con estándares modernos:
- Seguir los estándares ECMAScript garantiza una estabilidad a largo plazo.
- Soporte flexible para valores negativos:
slicepermite una extracción concisa tanto desde la posición inicial como final.

6. Preguntas frecuentes (FAQ)
Esta sección resume preguntas comunes y sus respuestas sobre los métodos de manipulación de cadenas en JavaScript.
Q1: ¿Puedo seguir usando substr?
A: Sí, la mayoría de los navegadores modernos aún soportan substr.
Sin embargo, dado que ECMAScript lo marca como obsoleto, debería evitarse en proyectos nuevos o bases de código que requieran compatibilidad futura.
Alternativa recomendada:
let str = "JavaScript";
console.log(str.slice(0, 4)); // "Java"
Q2: ¿Cuál es la diferencia entre slice y substring?
A: La tabla a continuación resume sus diferencias:
| Feature | slice | substring |
|---|---|---|
| End index behavior | End index is excluded | End index is excluded |
| Negative values | Supported | Treated as 0 |
| Flexibility | High | Moderate |
| Recommendation | Highly recommended | Recommended |
Ejemplos:
let str = "JavaScript";
// slice examples
console.log(str.slice(0, 4)); // "Java"
console.log(str.slice(-6)); // "Script"
// substring examples
console.log(str.substring(0, 4)); // "Java"
console.log(str.substring(4, 10)); // "Script"
Q3: ¿Cuáles son los riesgos de seguir usando métodos obsoletos?
A:
- Posible eliminación del soporte del navegador:
substrpodría dejar de estar soportado eventualmente. - Aumento de los costos de mantenimiento: Depurar características obsoletas lleva tiempo adicional.
- Calidad de código inferior: No seguir los estándares modernos reduce la legibilidad.
Q4: ¿Qué método es mejor para cadenas largas?
A: slice es el mejor porque soporta índices negativos y ofrece gran flexibilidad.
Ejemplo:
let longText = "This is a very long text string used for testing purposes.";
// First 10 characters
console.log(longText.slice(0, 10)); // "This is a "
// Last 10 characters
console.log(longText.slice(-10)); // "purposes."
Q5: ¿Cómo puedo contar hacia atrás usando valores negativos?
A: Usa slice, ya que substring trata los valores negativos como 0.
Ejemplo:
let str = "JavaScript";
// slice supports negative values
console.log(str.slice(-6)); // "Script"
// substring treats negative as 0
console.log(str.substring(-6)); // "JavaScript"
Q6: ¿Hay diferencias de rendimiento?
A: Los navegadores modernos no muestran diferencias significativas de rendimiento entre slice, substring o substr.
Dado que todas son funciones nativas, prioriza la legibilidad y el mantenimiento sobre micro-optimizaciones.
7. Resumen y Mejores Prácticas Recomendadas
En este artículo, exploramos los métodos de cadenas de JavaScript substr, substring y slice, cubriendo su sintaxis básica, diferencias, ejemplos de código prácticos y estrategias de migración para métodos obsoletos.
Esta sección reorganiza las características clave de cada método y presenta las mejores prácticas modernas recomendadas.
7.1 Resumen de Cada Método
| Method Name | Main Characteristics | Recommendation Level |
|---|---|---|
substr | Specifies start index and length; does not support negative values. Deprecated. | Not Recommended |
substring | Specifies start and end indices; negative values become 0. Suitable for simple use cases. | Recommended |
slice | Specifies start and end indices; supports negative values. Very flexible and versatile. | Highly Recommended |
7.2 Criterios Prácticos de Selección
- Usa
substringpara extracción simple de rangos:
- Mejor cuando no se necesitan valores negativos. Ejemplo:
let str = "JavaScript"; console.log(str.substring(0, 4)); // Output: "Java"
- Usa
slicepara máxima flexibilidad:
- Soporta índices negativos y es el método preferido para nuevo código. Ejemplo:
let str = "JavaScript"; console.log(str.slice(-6)); // Output: "Script"
- Reemplaza
substrlo antes posible:
- Migra a
sliceosubstringcuando mantengas código legado.
7.3 Mejores Prácticas Modernas
- Escribe código con la legibilidad en mente:
- El código claro y conciso mejora el mantenimiento a largo plazo.
- Evita métodos obsoletos:
substrpuede perder soporte en navegadores en actualizaciones futuras—migra temprano.
- Usa
slicecuando trabajes con valores negativos:
slicees el único método que maneja correctamente los índices negativos.
- Usa ESLint y suites de pruebas para mantener la calidad del código:
- El análisis estático ayuda a detectar métodos obsoletos y a imponer estilos de codificación modernos.
7.4 Ejemplo de un Estilo de Codificación Moderno
// Example: Extract domain from an email address
let email = "user@example.com";
let domain = email.slice(email.indexOf("@") + 1);
console.log(domain); // Output: "example.com"
// Example: Get file extension from a URL
let url = "document.pdf";
let extension = url.slice(-3);
console.log(extension); // Output: "pdf"
7.5 Plan de Acción para los Lectores
- Revisa tu código existente:
- Verifica si
substrse usa en tu proyecto y reemplázalo donde sea necesario.
- Sigue las mejores prácticas en nuevo código:
- Usa patrones modernos y flexibles y evita características obsoletas.
- Aprovecha comentarios y preguntas de la comunidad:
- Comparte preguntas o casos de uso para ayudar a otros a aprender mientras fortaleces tu comprensión.
Conclusión
Este artículo proporcionó una explicación detallada de los métodos substr, substring y slice de JavaScript, incluyendo sintaxis, ejemplos, tablas de comparación y estrategias de migración.
- Evita
substrporque está obsoleto. - Usa
substringpara escenarios simples. - Usa
slicepara máxima flexibilidad y mejores prácticas modernas.
Usa estos conocimientos para escribir código JavaScript eficiente y mantenible. 
8. Enlaces y Referencias Relacionadas
Para profundizar en tu comprensión de substr, substring y slice, aquí hay enlaces y referencias útiles.
La documentación oficial y los recursos de aprendizaje te ayudarán a mantenerte al día con las últimas actualizaciones y técnicas de JavaScript.
8.1 Documentación Oficial
- MDN Web Docs – Objeto String de JavaScript
- Enlace: String – MDN Web Docs
- Resumen: Una referencia completa para el objeto
Stringde JavaScript con especificaciones detalladas y ejemplos.
- Especificación de ECMAScript (ECMA-262)
- Enlace: ECMAScript Official Specification
- Descripción: La especificación oficial del lenguaje que cubre las últimas características de ECMAScript, métodos obsoletos y detalles técnicos.
8.2 Sitios de aprendizaje y tutoriales
- JavaScript.info – Guía de manipulación de cadenas
- Enlace: JavaScript.info
- Descripción: Una guía extensa que cubre tanto operaciones básicas como avanzadas de cadenas con ejemplos prácticos.
- Progate – Curso de JavaScript para principiantes a intermedios
- Enlace: Progate
- Descripción: Una plataforma interactiva ideal para principiantes que aprenden mediante ejercicios de codificación prácticos.
- DotInstall – Lecciones introductorias de JavaScript
- Enlace: DotInstall
- Descripción: Lecciones en video cortas que facilitan aprender JavaScript de forma visual y rápida.
8.3 Recursos prácticos de código de ejemplo
- GitHub – Proyectos de ejemplo de JavaScript
- Enlace: GitHub
- Descripción: Aprende buenas prácticas y patrones del mundo real explorando proyectos de código abierto.
- CodePen – Compartir código interactivo
- Enlace: CodePen
- Descripción: Comparte y prueba tu código con otros desarrolladores o navega ejemplos para inspirarte.
8.4 Libros recomendados
- Descripción: Una referencia completa y autoritaria que cubre JavaScript desde los fundamentos hasta características avanzadas.
- Descripción: Una referencia práctica centrada en JavaScript moderno y estándares de codificación actualizados.
8.5 Comunidad y foros
- Stack Overflow (Japanese)
- Enlace: Stack Overflow
- Descripción: Una comunidad de preguntas y respuestas donde puedes resolver problemas de JavaScript de manera eficiente.
- Qiita
- Enlace: Qiita
- Descripción: Una plataforma japonesa con abundantes artículos prácticos y casos de estudio de JavaScript.
- Teratail
- Enlace: Teratail
- Descripción: Un sitio de preguntas y respuestas japonés ideal para formular preguntas técnicas en tu idioma nativo.
Conclusión
Esta sección presentó una amplia gama de recursos — desde referencias oficiales hasta tutoriales, repositorios de código de ejemplo y plataformas comunitarias — para apoyar el aprendizaje continuo sobre las operaciones de cadenas en JavaScript.
Puntos clave:
- Revisa la documentación oficial regularmente:
- Asegúrate de que tu estilo de codificación se mantenga alineado con los últimos estándares.
- Fortalece tus habilidades mediante la codificación práctica:
- La práctica hace que los conceptos sean más claros y mejora la aplicación en el mundo real.
- Participa en la comunidad:
- Compartir preguntas y soluciones ayuda a profundizar la comprensión y ampliar tu red.



