elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Curso de javascript | 8. Strings y javascript
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Curso de javascript | 8. Strings y javascript  (Leído 4,200 veces)
TickTack


Desconectado Desconectado

Mensajes: 434


CipherX


Ver Perfil
Curso de javascript | 8. Strings y javascript
« en: 20 Julio 2022, 00:06 am »

Strings y javascript
En javascript, los datos de texto se almacenan en un string. A diferencia de otros lenguajes de programación, no hay tipos de datos adicionales en javascript como para caracteres de 1 dígito.

UTF-16 es el formato interno de javascript para almacenar cadenas. Importante: no está vinculado a la codificación de la página (encoding). Por lo tanto, no importa si un sitio web especifica "ISO-8859-1" o "UTF-8" en el encabezado. javascript siempre usa UTF-16.


Estructura básica de las cadenas
Las cadenas se asignan a una variable. Esto se puede hacer usando el conocido var o usando let. Las comillas van después del signo igual:

Código
  1. var x = "Curso de javascript";
  2. var y = 'Curso de javascript';
  3. var z = `Curso de javascript`;

Ahora usamos 3 comillas diferentes en el ejemplo anterior, y la buena noticia es que las 3 funcionan bien. Pero ¿cuál es la diferencia?

Las comillas simples y dobles tienen el mismo uso. No debe haber compaginaciones en la siguiente línea, de lo contrario, javascript arrojará mensajes de error.

Las comillas invertidas (en inglés "backticks") son la forma más moderna de comillas. Con los "backsticks" tenemos la ventaja de que también se puede producir una ruptura entre las comillas invertidas sin que javascript se queje con un error.

Código
  1. var z = `Curso de javascript
  2. para
  3. aprender javascript`;

Pero, ¿cómo podríamos incluir una ruptura en el tipo tradicional de comillas? Y la segunda pregunta: ¿cómo se puede empaquetar una comilla, que se imprima, en una cadena como contenido?

Es posible "enmascarar" caracteres especiales, como las distintas comillas. Así se llama esta técnica. Simplemente se escribe una barra invertida antes del "carácter problemático" y todo está bien. Entonces, si se desea guardar una comilla en una cadena como contenido, simplemente se escribe \":

Código
  1. var x = "Hoy es un \"gran\" dia";

Y entonces tenemos como salida (si imprimimos la cadena):



Si se va a imprimir una barra invertida, entonces se inserta una barra invertida antes de la barra invertida:

CodigoResultadoDescripcion
\""Comilla doble
\''Comilla simple
\\\Barra invertida

Compaginar líneas largas
Los programadores son muy reacios a tener líneas de más de 80 caracteres en su código. Entonces, si una declaración de javascript no cabe en una línea y debe de ajustarse, hay varias opciones.

Compaginación después de un operador:

Código
  1. document.getElementById("salida").innerHTML =
  2.   "Hola mundo";

O simplemente concatenar la salida con "+".

Código
  1. document.getElementById("salida").innerHTML = "Hola " +
  2.   "mundo";


Los strings tienen propiedades y métodos
Los strings tienen propiedades y métodos. Una de las propiedades más conocidas es la longitud de caracteres. En el siguiente ejemplo se determina la longitud de caracteres de la cadena "x" y se almacena en una variable. ¿Por qué se almacena esto en una nueva cadena extra y no se imprime directamente? Por razones didácticas. Esta es la mejor manera de ver la estructura de la instrucción length:

Código
  1. var x = "Hola mundo";
  2. var longitud = x.length;
  3. alert(longitud);

Importante: no hay paréntesis después de la propiedad length. ¿Por qué? ¡Es una propiedad y no un método o una función!

Más sobre esto en un capítulo siguiente.


« Última modificación: 20 Julio 2022, 21:31 pm por TickTack » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Curso de javascript | 8. Strings y javascript
« Respuesta #1 en: 20 Julio 2022, 01:29 am »

Citar
UTF-16 es el formato interno de javascript para almacenar cadenas. Importante: no está vinculado a la codificación de la página (encoding). Por lo tanto, no importa si un sitio web especifica "ISO-8859-1" o "UTF-8" en el encabezado. javascript siempre usa UTF-16.

javascript usa UTF-16 para sus strings pero no para su código fuente. Es posible tener scripts de javascript escritos en otros formatos y si el parser se llegará a confundir puede haber problemas a la hora de interpretar los strings. De igual manera, si un documento de HTML especifica un formato diferente al del archivo en sí es posible que el texto del documento acabe distorsionado y que javascript a la hora de interactuar con el documento también acabe con los strings malformados.

No se recomienda una barra invertida "\" al final; funciona en algunos navegadores, pero no hay soporte completo. Por lo tanto, es una idea estúpida usar esa variante.

Código
  1. document.getElementById("salida").innerHTML = "Hola \
  2. mundo";

No es ninguna tontería, es parte del estándar y ya tiene sus buenos años ahí. Me preocuparía más si tu navegador no lo interpreta correctamente.

Citar
En el siguiente ejemplo se determina la longitud de caracteres de la cadena "x" y se almacena en otra cadena. ¿Por qué se almacena esto en una nueva cadena extra y no se imprime directamente?

Código
  1. var x = "Hola mundo";
  2. var longitud = x.length;
  3. alert(longitud);

Importante: no hay corchetes después de la propiedad length. ¿Por qué? ¡Es una propiedad y no un método o una función!

La propiedad length no es una cadena de caracteres. Es un número, que representa la longitud del string.

Por lo general a los caracteres que se utilizan en una llamada de una función se les llama paréntesis (( )) y no corchetes ([ ]).


En línea

TickTack


Desconectado Desconectado

Mensajes: 434


CipherX


Ver Perfil
Re: Curso de javascript | 8. Strings y javascript
« Respuesta #2 en: 20 Julio 2022, 13:45 pm »

javascript usa UTF-16 para sus strings pero no para su código fuente. Es posible tener scripts de javascript escritos en otros formatos y si el parser se llegará a confundir puede haber problemas a la hora de interpretar los strings. De igual manera, si un documento de HTML especifica un formato diferente al del archivo en sí es posible que el texto del documento acabe distorsionado y que javascript a la hora de interactuar con el documento también acabe con los strings malformados.
Eso lo interprete como un comentario adicional, no como una corrección. No se si lo interprete bien.

La propiedad length no es una cadena de caracteres.
Nunca escribí eso.

Lo demás lo corregí.
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Curso de javascript | 8. Strings y javascript
« Respuesta #3 en: 20 Julio 2022, 20:36 pm »

Eso lo interprete como un comentario adicional, no como una corrección. No se si lo interprete bien.
Nunca escribí eso.

Lo demás lo corregí.

No entendí que quisiste decir pero el formato del sitio y como maneja javascript internamente los strings son cosas diferentes. Si importa el formato que le des a tus archivos web, scripts, bases de datos, etc porque al final de cuenta, estás especificando el formato de tu información.

En el mejor de los casos, lo que se pudiera entender de tu comentario es que no puedes cambiar como es que javascript maneja sus strings internamente y esto es cierto, no se puede configurar el entorno de javascript para usar otro formato internamente. Pero de ahí a decir que no importa como configures la ingesta de datos de tu programa host pues eso es muy diferente.

Citar
En el siguiente ejemplo se determina la longitud de caracteres de la cadena "x" y se almacena en otra cadena. ¿Por qué se almacena esto en una nueva cadena extra y no se imprime directamente?

Ahi lo escribiste.
En línea

TickTack


Desconectado Desconectado

Mensajes: 434


CipherX


Ver Perfil
Re: Curso de javascript | 8. Strings y javascript
« Respuesta #4 en: 20 Julio 2022, 21:41 pm »

No entendí que quisiste decir pero el formato del sitio y como maneja javascript internamente los strings son cosas diferentes.
Es por eso que escribí que no está vinculado a la codificación de la página.

Pero de ahí a decir que no importa como configures la ingesta de datos de tu programa host pues eso es muy diferente.
Bueno, no importa en el sentido de que haga lo que uno haga, no se puede cambiar el hecho de que javascript use siempre el formato UTF-16.

Lo de la propiedad length fue un error mio. Estaba pensado en una variable, pero escribí string. Gracias por avisarme.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines