Bienvenido a cursohacker.es. Puedes acceder a todo el contenido líbremente pero si deseas poder crear tus propios temas en el foro y que tus respuestas y comentarios se publiquen de forma automática regístrate como alumno aquí

El lenguaje javascript, variables

En esta publicación vamos a ver de forma más profunda cómo se trabaja con el lenguaje javascript. En una primera instancia ya vimos que javascript está estrictamente ligado al hacking y al mundo de la seguridad informática en el papel de javascript en el hacking. Después hicimos una pequeña intruducción al lenguaje javascript en la que vimos lo que se podía llegar a hacer con javascript en nuestro curso de javascript básico. Y ahora estamos peparados para empezar a crear nuestros propios scripts escritos en lenguaje javascript.

Variables en el lenguaje javascript

Una variable es una zona de código donde podemos almacenar un valor. Podemos almacenar muchísimos tipos de datos; desde el resultado de hacer una operación aritmética, hasta el nombre de la persona que está visitando tu página web, pasando por multitud de datos como son las cookies. Si ya has programado en otros lenguajes de programación como Visual Basic, C Java... sabrás que no es lo mismo una variable destinada a almacenar números que una variable destinada a almacenar cadenas de texto. En javascript esto no es así, javascript es un lenguaje débilmente tipado, lo que significa que nosotros definimos una variable y luego podemos almacenar en ella cualquier valor que queramos. En el siguiente ejemplo vamos a definir una variable llamada número y vamos a asignar a esa variable el valor 100, luego vamos a mostrar en un cuadro de diálogo el valor que le hemos asignado a la variable:

<script>
var numero = 100;
alert (numero);
</script></>

Del mismo modo podríamos almacenar un texto y mostrarlo por pantalla:

<script>
var miTexto= 'Hola soy un ejemplo de cursohacker';
alert (miTexto);
</script></>

Como habrás podido comprobar podemos utilizar el nombre que queramos para nuestras variables. Las buenas prácticas de progración recomiendan siempre utilizar nombres para las variables lo más descriptivos posibles. Esto es muy necesario porque si en el futuro tienes que readaptar tu código u otra persona tiene que mantenerlo le será de muchísima utilidad para entender el código que el nombre de las variables expresen de forma correcta el valor que están almacenado. Ten en cuenta que cuando estás escribiendo tu código eres tú quien lo tiene todo en mente y sabes para que estás utilizando cada variable, pero con el paso del tiempo acabarás olvidandolo y si tienes que retomarlo tendrás que entender de nuevo el proceso lógico que tiene tu programa. Desde el punto de vista de la seguridad informática esto puede suponer un problema. Recordemos que javascript es un lenguaje no compilado, es un lenguaje interpretado, lo que significa que cualquiera puede ver tu código, analizarlo y buscar la manera de comprometerlo. Pero para solucionar este problema de seguridad vimos que existen ofuscadores de código javascript que dificultan la comprensión del código a terceros.

Una muy buena práctica a la hora de escoger nombres para las variables tanto en javascript como en cualquier otro lenguaje de programación es utilizar las mayúsculas o guiones bajos en las palabras internas de la variable. Si tu quieres tener una variable para almacenar el nombre de tu cliente podrías crear la variable con este nombre: "nombreCliente" o "nombre_cliente". Lo que si debes hacer es utilizar siempre la misma metodología. Si optas por guiones bajos utiliza siempre guiones bajos ya que el utilizar una nomenclatura para unas variables y otra nomenclatura diferente para otras variables de dificultará a ti mismo la lectura del código. 

Existe una restricción más que debes saber. No puedes utilizar cualquier nombre para tus variables. Hay algunas palabras que están reservadas por el lenguaje javascript  lo que significa que no podrán ser utilizadas como identificadores, estas son: break, switch, if, var, while, function, else, alert, Math, etc... Además de esto tenemos que tener en cuenta que los nombres de las variables en el lenguaje javascript:

  • No pueden tener espacios intermedios.
  • No pueden tener acentos.
  • No pueden tener puntos.
  • No pueden tener cualquier otro signo (#, +, $,...).
  • No pueden comenzar con números ni signos.

Javascript es un lenguaje Key Sensitive. Esto quiere decir que hace distinción entre mayúsculas y minúsculas. Para javascript la variable hola y la variable Hola son distintas. Debes tener esto muy presente a la hora de programar en javascript. Puede ocurrirte por un despiste que guardes un valor en la variable sumaTotal y lo intentes recuperar llamando a la variable sumatotal. Como sumatotal es una variable que no has utilizado antes (la que has utilizado es sumaTotal) te encontrarás que está vacía y te supondrá un problema en tu código.

Declaración de variables en el lenguaje javascript

Generalmente, en los lenguajes de programación más comunes estamos obligados a declarar o definir las variables previo uso de las mismas. Para eso utilizamos la palabra reservada "var" seguida del nombre que queremos darle a la variable, desde este momento el programa sabe que existe esta variable y puede ser utilizada asignándole un valor. Aunque es recomendable hacerlo para tener un código más limpio y compresible, como ya sabemos en Javascript no es necesario, por lo que podemos asignar directamente un valor a la variable cuando se está declarando o asignarle un valor sin haberla declarado y será mas que suficiente. Veamos los distintos tipos que nos brinda el lenguaje javascript para declarar las variables:

  • Declaración de variables explícita. Hace referencia a cuando utilizamos la palabra “var”, sea que se le asigne o no una valor en el mismo momento.
  • Declaración implícita. Hace referencia al momento de inicializar una variable NO usando la palabra var.

En el lenguaje JavaScript, las variables que declaremos serán accesibles desde cualquier lugar de la página, es decir desde el script donde se han declarado y todos los demás scripts de la página, incluidos los manejadores de eventos, en cuyo caso se llaman variables globales. Aunque también podremos declarar variables que únicamente sean accesibles en lugares más acotados, para que sean “locales” a ese ámbito, como por ejemplo una función o un bucle.

Tipos de datos en javascript

En la mayoría de los lenguajes de programación, a la hora de definir una variable, debemos elegir entre varios tipos según sea el tipo de dato que queremos almacenar. En Javascript (como ya dijimos) esto no es necesario, ya que al ser un lenguaje débilmente tipado no debemos de especificar el tipo de dato a la hora de declarar nuestras variables. En javascript podemos trabajar con los siguientes tipos de datos:

  • Números. Tanto enteros como reales. Javascript puede trabajar con sistema de numeración decimal (la de toda la vida) y con sistemas de numeración como octal (base 8) y hexadecimal (base 16). 
     
  • Cadenas de caracteres. Como ya hemos visto las cadenas de caracteres las utilizamos para guardar texto. El nombre de un cliente, el estado en que se encuentra un pedido o la contraseña de acceso introducida por el usuario
     
  • Valores lógicos. Este tipo de dato se utiliza para almacenar valres del tipo verdadero o falso. Por ejemplo podríamos crear una variable llamada "logeado" de tipo lógica (también conocido como tipo booleano)  y asignar "verdadero" (TRUE) si el visitante está logeado o "falso" (FALSE) si el visitante no está logeado.
     
  • Objetos. Sin duda alguna esta variable es la más compleja de explicar. Aquí podemos almacenar objetos completos que existen en el DOM de la página web. Más adelante veremos los distintos tipos de objetos que disponemos para trabajar con Javascript. Además nosotros podemos crear nuestros propios objetos y hacer uso de la POO (programación orientada a objetos)

En el siguiente ejemplo vamos a crear una variable de tipo lógico, vamos a preguntar al visitante si desea aprender sobre seguridad informática y de contestarnos afirmativamente lo vamos a llegar a nuestra página cursohacker.es.

<script>
var pregunta = confirm("¿Quieres aprender sobre seguridad informática?");
if (pregunta  == true)
{
window.location="http://cursohacker.es";
}
</script>

Para enviar al visitante a nuestra web hemos hecho uso de la función javascript window.location; la cual la veremos más adelante. Para hacer la consulta hemos utilizado la función "confirm" que lo que hace es mostrar un diálogo de este tipo:
Pregunta en javascript; función confirm

Cuando en el lenguaje javascript queremos crear una cadena de caracteres debemos de tenerla entrecomillada, ya sea con comillas dobles o con comillas simples. Si yo quiero almacenar la cadena de caracteres "cursohacker.es" en una variable lo haré de la siguiente forma:

<script>
var miCadena = "cursohacker.es";
</script>

Todo lo que esté entrecomillado será tratado como una cadena de caracteres, podemos tener tanto números como palabras. Una propiedad de estas cadenas es que se pueden concatenar unas con otras. Es decir podemos juntar varias para crear una cadena con la suma de ambas. Veamos esto con el siguiente ejemplo. Vamos a tener por un lado una variable llamada usuario que contendrá el valor "Juan" y otra variable llamada eleccion que contendrá el valor "coches". Ahora con estas dos variables vamos a crear una tercera cadena de caracteres que englobe a ambas:

<script>
var usuario= "Juan";
var eleccion="coches";
var fraseFinal= "A " + usuario + " le gustan los " + eleccion;
alert(fraseFinal);
</script>

El resultado que veremos en pantalla será la suma de las 4 cadenas de caracteres que hemos concatenado:

Finalmente, a la hora de trabajar con números se puede dar el caso de que en algún momento podremos encontrarnos con algún mensaje de error o salida inesperada que contenga “NaN”. NaN es la salida que recibiremos cuando queremos realizar alguna operación con una variable como si esta contuviera números cuando en realidad no los contiene. Esto puede ocurrir en caso de que tengas en una variable una cadena de caracteres, en otra variable un número y pretendas hacer la suma aritmética. Observa en el siguiente ejemplo la diferencia:

<script>
var dato1= "100";
var dato2=100;
</script>

Ambas variables (dato1 y dato2) almacenan el valor 100, pero la diferencia es que en la variable, dato1, está almacenado como cadena de caracteres y en la variable, dato2, como número entero. Esto es así porque en dato uno está entrecomillado y recordemos unas líneas antes cuando dijimos que en el lenguaje javascript todo lo que esté entrecomillado será tratado como cadena de caracteres. Existe en javascript una función llamada parseInt que lo que hace es transformar el contenido de una variable instanciada con una cadena de texto a un número. Podríamos convertir el valor del texto almacenado en el ejemplo anterior en la variable dato1 en un número entero y almacenaro en una tercera variable con el siguiente código javascript:

<script>
var dato1= "100";
var dato2=100;
var dato3=parseInt(dato1); //Convertimos una cadena de texto a un número entero

</script>

Esta función de javascript es especialmente útil en casos en los que los valores han sido pedidos al usuario. Ya que el usuario aunque le pidamos un número puede por algún motivo u otro introducirnos cualquier otra cosa y hacer que nuestro código se comporte de forma anómala.

Comentarios

Hola,

Gracias por el curso, ojalá todos estuvieran tan bien explicados como este!! Y en lo referente a lenguajes, ojalá todos vinieran con estos ejemplos y no se limitaran a mostrar la gramática!

Y dicho esto, ojalá cambiáriais el captcha!! (de 6 a 10 intentos por vez...).

Bueno, el párrafo final no lo comprendo:

"Esta función de javascript es especialmente útil en casos en los que los valores han sido pedidos al usuario. Ya que el usuario aunque le pidamos un número puede por algún motivo u otro introducirnos cualquier otra cosa y hacer que nuestro código se comporte de forma anómala."

¿No es que JavaSript está débilmente tipado?

Yo supongo que se refiere a que, por ejemplo, un usuario puede introducir entrecomillado un número en donde se esperaba eso, un número, puesto que luego, el programa hace alguna operación aritmética. Al no estar tipadas, el intérprete, lo asimila como una cadena de caracteres y lo tratará como tal, sin embargo, la operación aritmética se realizará independientemente del tipo de dato almacenado, no obteniéndose, por lo tanto, el resultado esperado o cualquier hecho imprevisible.

Espero haber ayudado, un saludo.

Si te ha sido de utilidad Compárteme