Introducción Javascript

¿Qué es Javascript?

Javascript es un lenguaje de programación orientado a objetos, funcional, imperativo y declarativo, es decir, multi-paradigma, por eso es un lenguaje muy potente. La razón de ser multi-paradigma es que está basado principalmente en dos lenguajes con características únicas:

  1. Scheme, Paradigma funcional.
  2. Self, Paradigma orientado a objetos, basado en prototipos en lugar de clases.

Si quieres saber más al respecto, puedes visitar ¿Qué relación tiene Javascript con Scheme, Self y Java? donde seguro despejaras dudas y te recomiendo que lo leas.

Javascript es un lenguaje interpretado, es decir, compilado en el momento (Just-in-time compilation), el interprete recorre linea por linea y así va traduciendo el código a lenguaje binario para que la computadora lo pueda entender.

Javascript no solo se puede ejecutar en el navegador web, sino también del lado del servidor, como lo hace en node.js, a estos lugares donde javascript se puede ejecutar se les llama ambientes huésped y tienen sus propias funcionalidades y APIs que no son parte del estándar de Javascript, por ejemplo, en el navegador encontramos los objetos window y document, en node.js podemos encontrar los objetos http y fs.

¿Cómo se usa Javascript?

Para aprender cualquier otro lenguaje, todos sabemos que necesitamos saber su gramática. Vamos a citar la definición de gramática sacada de wikipedia:

La gramática es el estudio de las reglas y principios que gobiernan el uso de las lenguas y la organización de las palabras dentro de unas oraciones y otro tipo de constituyentes sintácticos.

Solo veremos la gramática básica para poder empezar a crear código, de tal manera que se combinen con ejemplos prácticos y en los siguientes artículos iremos aumentando nuestro entendimiento de la misma forma.

Tipos de datos

Javascript es un lenguaje débilmente tipeado, o sea, que no es necesario definir el tipo de dato, pero no quiere decir que no tenga tipos, pues el tipo de dato es definido en tiempo de ejecución por Javascript.

Datos primitivos

Casi todo en Javascript es un Objeto, la excepción son los datos primitivos, los cuales no son Objetos y no tiene métodos, tenemos 6 datos primitivos:

  1. Number, números como; 1, 0, 18500, 89.95124
  2. String, cadena de caracteres como ‘Hola’ y ‘Buenas noches’.
  3. Boolean, solo acepta true o false, es decir, si o no.
  4. null, sirve para indicar que algo es nada, su único valor es null.
  5. undefined, sirva para indicar que algo aun no está definido.
  6. Symbol, nuevo en el lenguaje a partir de EcmaScript 6

Todo lo demás son objetos, incluso los tipos de datos String, Boolean, Number y Symbol tiene su correspondiente representación en Objeto. Una función es un objeto. Ejemplos de objetos:

  • Object
  • Function
  • Array
  • Date
  • RegExp
  • Error

Comentarios

Los comentarios son muy importantes para un código fácil de mantener, entender y recordar, yo tengo muy mala memoria y siempre necesito de algún comentario que me haga recordar lo que estaba haciendo ayer.

La sintaxis de los comentarios fue tomada de C++.

// Este es un comentario de mucho valor /**  * Este es un comentario con mas de una linea  * y esta es la segun linea  * y una tercera linea  */

Declarar elementos reutilizables

Uno de los elementos más usados son las variables, las variables son como cajitas con etiquetas o espacio de memoria para guardar algún tipo de dato.

Las etiquetas de las cajitas deben cumplir ciertas reglas. Su nombre o identificador no puede iniciar con un numero, deben iniciar con alguna letra (incluyendo _ y $), y ademas Javascript es sensible a mayúsculas y minúsculas.

Existen dos maneras de declarar una variable. Una es usando var y la otra usando let.

Del código anterior, presta atención solo a las definiciones de variables, ahí tanto let como var tienen el mismo efecto, definen una variable global que puede ser accesada en cualquier parte de la ejecución. La parte que empieza con document.querySelector se usa para imprimir el resultado en la página actual que genera codepen y son objetos y métodos del ambiente huésped (el navegador web).

A las variables que no le definimos algún valor, Javascript les asigna el valor undefined.

Las funciones son otro de los elementos más importantes del lenguaje, si no es que el mas importante. Con una función podemos realizar un conjunto de acciones sin volverlo a escribir y nos permitirá obtener un resultado según los argumentos que recibe a la hora de ejecutarla. Pero no solo eso, nos permite resolver problemas desde el punto de vista de paradigmas de programación como funcional y orientado a objetos, por poner un ejemplo, nos permite crear patrones de diseño muy útiles como el Singleton o el Patron Observador.

En el ejemplo vemos como invocamos dos veces la función getNombreCompleto(nombre, apellido) ahorrando tiempo y esfuerzo obteniendo un resultado similar.

En Javascript no existe ámbitos de bloques como en C y Java, donde las variables definidas en un bloque utilizando llaves {} solo existen en ese ámbito y no puede ser accedidas desde afuera.

Javascript tiene ámbito de función, para ilustrar este tipo de ámbito vamos a crear una función donde se definen dos variables, más adelante en el código, fuera de la función se intenta obtener el valor de la variable jaime, pero esto no es posible y tendremos un ReferenceError, lo que provocaría que se detuviera la ejecución del script, por eso catchamos el error dentro de un try..catch, y en el punto donde se quiere acceder a jaime se detiene el resto del bloque de try para ir al bloque catch.

Hasta Junio del 2015 solo existía la forma de var para declarar variables, actualmente la forma let de declarar variables permite utilizar ámbito de bloque, por ejemplo en un bloque if. Solo funciona en las ultimas versiones de los navegadores web. Aquí abajo un ejemplo.

Elevado de variables y funciones

En el caso de las variables la declaración es elevada hasta el comienzo de un conjunto de sentencias, al comienzo de una función o en el caso de let, al comienzo de un bloque, pero con valor undefined. Así que podrías utilizar una variable antes de su declaración, pero te regresara undefined si quieres obtener su valor, deberías acceder a una variable después de asignarle un valor .

En el caso de variables dentro funciones te recomiendo su definición al comienzo de la función, de esta manera es más probable obtener su valor real asignado.

Es recomendable siempre utilizar let para la definición de variables, pero como let es relativamente nuevo seguro que te encontraras mucho código utilizando var y es importante saber como funciona.

A las funciones les pasa algo parecido, solo que se elevan junto con su definición por lo que no hay problemas al invocar una función antes de su definición.

Las variables pueden contener cualquier tipo de dato. Por lo que podemos guardar una función literal (sin nombre) a una variable. En este caso no se aplica elevado de funciones, mas bien es elevado de variables.

Es recomendado invocar una función después de que se haya definido. En el recorrido de estos ejemplos asignamos varios tipos de valores a las variables sin necesidad de indicarles de que tipo son.

Ademas de las variables existe un tipo de cajita que no puede cambiar lo que guarda una vez definido su valor, se llaman constantes y como las variables let tienen ámbito de bloque, también son relativamente nuevas en el lenguaje.

Por ultimo veamos como crear un objeto. Un objeto es una colección de pares nombre: valor, parecido a los arrays asociativos de PHP. Estos pares de nombre/valor se les llama propiedades, una propiedad es como una variable y puede contener cualquier tipo de valor. Para crear un objeto no necesitas crear una clase, tu simplemente creas el objeto y lo empiezas a utilizar.

En el ejemplo tenemos un objeto persona, tiene varias propiedades de diferentes tipo, su nombre es un String, su edad es un Number, getNombre y hablar son de tipo Function, las funciones que son miembros de un objeto se les llama métodos, Si presionas el botón que dice hablar, se ejecuta una función externa que internamente invoca a la función hablar del objeto persona.

Espero que me comuniquen sus dudas, comentarios, correcciones, criticas y cualquier cosa que mejore este artículo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.