stringtranslate.com

Cita anidada

Una cita anidada es una cita que está encapsulada dentro de otra cita, formando una jerarquía con múltiples niveles. Cuando se centra la atención en una cita determinada, se debe interpretar dentro de su alcance. La cita anidada se puede utilizar en literatura (como en la narración anidada), en el habla y en la informática (como en las "meta" afirmaciones que hacen referencia a otras afirmaciones como cadenas ). La cita anidada puede ser muy confusa hasta que se evalúa con cuidado y hasta que cada nivel de cita se pone en perspectiva.

En la literatura

En los idiomas que permiten comillas anidadas y utilizan la puntuación de comillas para indicar el discurso directo, los subniveles de comillas jerárquicas suelen puntuarse alternando entre comillas primarias y secundarias. Para un análisis exhaustivo de los principales sistemas de comillas empleados en los principales sistemas de escritura, consulte Comillas .

En programación JavaScript

Las comillas anidadas suelen convertirse en un problema si se utiliza la palabra clave eval . [1] La función eval es una función que convierte e interpreta una cadena como código JavaScript real y ejecuta ese código. Si esa cadena se especifica como literal , entonces el código debe escribirse como una comilla (y escaparse en consecuencia).

Por ejemplo:

eval("var a=3; alerta();");

Este código declara una variable a , a la que se le asigna el valor 3 , y aparece una ventana de alerta en blanco para el usuario.

Cadenas anidadas (nivel 2)

Supongamos que tuviéramos que hacer una cita dentro del código interpretado citado. En JavaScript, solo se puede tener un subnivel de cita sin escape, que debe ser la alternativa de la cita de nivel superior. Si el símbolo de cita de segundo nivel es el mismo que el símbolo de primer nivel, estas comillas deben ser escapadas. [2] Por ejemplo:

alert("No necesito escapar de aquí");alert('Aquí tampoco es "obligatorio"');alert('Pero ahora lo hago o no funcionará');

Cadenas anidadas (nivel 3 y superiores)

Además, (a diferencia del ejemplo de la literatura), la comilla anidada de tercer nivel debe ser escapada para no entrar en conflicto con los delimitadores de comilla de primer o segundo nivel. Esto es así independientemente de la encapsulación con símbolos alternados. Cada nivel después del tercer nivel debe ser escapado recursivamente para todos los niveles de comilla en los que está contenido. Esto incluye el carácter de escape en sí, la barra invertida (“\”), que se escapa por sí misma (“\\”).

Para cada subnivel que contenga una barra invertida, se debe escapar para el nivel superior y, a continuación, se deben escapar todas las barras invertidas utilizadas para escapar esa barra invertida, así como la barra invertida original, y así sucesivamente para cada nivel al que se ascienda. Esto es para evitar ambigüedad y confusión en el escape.

A continuación se presentan algunos ejemplos que demuestran algunos de los principios mencionados anteriormente:

document . write ( "<html><head></head><body><p>Hola, este es el cuerpo del documento." ); document . writeln ( "</p>" ); document . write ( "<p>Una nueva línea en el código HTML actúa simplemente como un espacio en blanco, mientras que un <br> inicia una nueva línea." ); document . write ( "</p></body></html>\n" );eval ( 'eval(\"eval(\\\"alert(\\\\\\\"¡Ahora estoy confundido!\\\\\\\\")\\\")\")' );

Tenga en cuenta que el número de barras invertidas aumenta de 0 a 1, a 3, a 7 y a 15, lo que indica una regla para símbolos anidados sucesivamente, lo que significa que la longitud de las secuencias de escape crece exponencialmente con la profundidad de las citas.

Véase también

Referencias

  1. ^ "Método eval() de JavaScript".
  2. ^ "Cadenas de JavaScript".