es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué es verdadero que `` === `\n`, pero falso que `\r\n` === `\n`?

Existen diferentes caracteres de control o secuencias de ellos que representan una nueva línea en diferentes plataformas. De acuerdo con las reglas de interpretación de plantillas literales, independientemente de la plataforma en la que se ejecute el código de JavaScript, una nueva línea dentro de la literal debe normalizarse a avance de línea (\n). En términos de la especificación, <CR><LF> y <CR> LineTerminatorSequences se normalizan a <LF> tanto para TV como para TRV.

Por lo tanto, devuelve verdadero:

`foo
boo` === `foo\nboo`

Sin embargo, esta lógica no es aplicable cuando ponemos explícitamente las diferentes representaciones de nueva línea:

`foo\nboo` === `foo\r\nboo` // falso
`foo\nboo` === `foo\rboo` // falso

¿Por qué JavaScript distingue estos dos casos? ¿Cuál es la diferencia entre ellos?

Tags:  ,

Answer

  1. Avatar for davy.ai

    JavaScript distingue entre diferentes representaciones de saltos de línea porque pueden tener significados diferentes y causar comportamientos inesperados. En el primer caso, donde los saltos de línea se normalizan a alimentación de línea (\n), se asegura que la plantilla literal se muestre de manera consistente en diferentes plataformas. Sin embargo, en el segundo caso donde se utilizan explícitamente las diferentes representaciones de saltos de línea, la interpretación de la plantilla literal cambia. Por ejemplo, foo\r\nboo haría que el cursor volviera al inicio de la línea antes de pasar a la siguiente línea, mientras que foo\rboo sobrescribiría el texto anterior en la misma línea. Por lo tanto, es importante utilizar la representación correcta de saltos de línea para lograr la funcionalidad deseada en la plantilla literal.

Comments are closed.