Variables
Las Variables se utilizan para almacenar datos
Las variables solo tienen visibilidad (ambito) dentro de las funciones donde se declaran
Antes de poder utilizar una variable hay que:
- Declarar la variable (con la sentencia
var) - Inicializar la variable (en el momento de la declaración o despues)
var a = 1;
var b;
b = 2;
Las variables son Case Sensitive
var case_matters = 'lower';
var CASE_MATTERS = 'upper';
case_matters
CASE_MATTERS
¿Cómo chequear la existencia de una variable?
Forma Mala
>>> var result = '';
>>> if (somevar){result = 'yes';}
somevar is not defined
>>> result;
""
T> Genera un warning y que somevar devuelva false no quiere decir que no esté definida
Forma Correcta
>>> var somevar;
>>> if (typeof somevar !== "undefined"){result = 'yes';}
>>> result;
""
>>> somevar = 123;
>>> if (typeof somevar !== "undefined"){result = 'yes';}
>>> result;
"yes"
T> Si la variable está definida y tiene algún valor, su tipo de datos siempre será distinto de undefined
Primitivas y Tipos de Datos
Cualquier valor que se utilize en JS es de un cierto tipo. En Javascript existen los siguientes tipos de datos primitivos:
- Number: Puede contener numeros enteros (integer), decimales (float), hexadecimales, octales, exponentes y los números especiales
NaNyInfinity - String: Cualquier numero de caracteres entre comillas
- Boolean: puede ser
trueorfalse - Undefined: Es un tipo de datos con un solo valor:
undefined
Lo devuelve JS cuando no existe una variable o no está inicializada. - Null: Otro tipo de datos con un solo valor:
null
Lo podemos asignar nosotros para inicializar a vacio.
Cualquier valor que no pertenezca a uno de estos 5 tipo de primitivas es un objeto
Asi que los tipos de datos en javascript pueden ser:
- Primitivas (Los 5 tipos)
- No primitivas (Objetos)
Aunque existe el operador typeof que devuelve el tipo de dato, es mejor utilizar Object.prototype.toString
>>> typeof([1,2,3])
"object"
>>> Object.prototype.toString.call([1,2,3])
"[object Array]"
>>> typeof(function(){})
"function"
>>> Object.prototype.toString.call(function(){})
"[object Function]"
>>> typeof(new Date())
"object"
>>> Object.prototype.toString.call(new Date())
"[object Date]"
>>> typeof(27)
"number"
>>> Object.prototype.toString.call(27)
"[object Number]"
Existe el valor especial NaN (Not a Number) que obtenemos cuando intentamos hacer una operación que asume numeros pero la operación falla.
>>> var a = 10 * f;
>>> a
NaN
Operadores (Aritméticos, Lógicos y de Comparación)
Los Operadores toman uno o dos valores (o variables), realizan una operación, y devuelven un valor
El operador simple de asignación es =
var a = 1;
Operadores Aritméticos
Los operadores aritméticos básicos son:
+ Suma
>>> 1 + 2;
3
- Resta
>>> 99.99 - 11;
88.99
* Multiplicación
>>> 2 * 3;
6
/ División
>>> 6 / 4;
1.5
% Modulo
El resto de la división
>>> 6 % 3;
0
>>> 5 % 3;
2
Podemos utilizar el operador modulo, por ejemplo, para comprobar si un numero es par (% = 0) o impar (% = 1) .
>>> 4 % 2;
0
>>> 5 % 2;
1
++ Incremento en 1
Post-incremento devuelve el valor original (return) y despues incrementa el valor en 1.
>>> var a = 123; var b = a++;
>>> b;
123
>>> a;
124
Pre-incremento incrementa el valor en 1 y despues devuelve (return) el nuevo valor (ya incrementado).
>>> var a = 123; var b = ++a;
>>> b;
124
>>> a;
124
-- Decremento en 1
Post-decremento devuelve el valor original (return) y despues resta el valor en 1.
>>> var a = 123; var b = a--;
>>> b;
123
>>> a;
122
Pre-incremento resta el valor en 1 y despues devuelve (return) el nuevo valor (ya restado).
>>> var a = 123; var b = --a;
>>> b;
122
>>> a;
122
Tambien hay operadores compuestos
>>> var a = 5;
>>> a += 3;
8
Operadores Lógicos
Los Operadores Lógicos son:
!→ logical NOT (negation)&&→ logical AND||→ logical OR
>>> var b = !true;
>>> b;
false
La doble negación nos devuelve el valor original
>>> var b = !!true;
>>> b;
true
Las posibles operaciones y sus resultados son:
| Operation | Result |
|---|---|
true && true |
true |
true && false |
false |
false && true |
false |
false && false |
false |
true ❘❘ true |
true |
true ❘❘ false |
true |
false ❘❘ true |
true |
false ❘❘ false |
false |
Operadores de Comparación
Los Operadores de Comparación son:
== Igualdad
Devuelve true cuando los dos operandos son iguales. Los operandos son convertidos al mismo tipo de datos antes de la comparacion
>>> 1 == 1;
true
>>> 1 == 2;
false
>>> 1 == '1';
true
=== Igualdad y Tipo
Devuelve true cuando los dos operandos son iguales Y cuando son del mismo tipo de datos. Suele ser mejor y más seguro, utilizar esta comparación de igualdad (no hay transformaciones de tipo no controladas)
>>> 1 === '1';
false
>>> 1 === 1;
true
!= No Igualdad
Devuelve true cuando los dos operandos NO son iguales (despues de una conversion de tipo)
>>> 1 != 1;
false
>>> 1 != '1';
false
>>> 1 != 2;
true
!== No Igualdad Sin conversion de tipo
Devuelve true cuando los dos operandos NO son iguales o cuando son de tipos diferentes
>>> 1 !== 1;
false
>>> 1 !== '1';
true
> Mayor que
Devuelve true si el operando de la izquierda es mayor que el de la derecha
>>> 1 > 1;
false
>>> 33 > 22;
true
>= Mayor o Igual que
Devuelve true si el operando de la izquierda es mayor o igual que el de la derecha
>>> 1 >= 1;
true
< Menor que
Devuelve true si el operando de la izquierda es menor que el de la derecha
>>> 1 < 1;
false
>>> 1 < 2;
true
<= Menor o Igual que
Devuelve true si el operando de la izquierda es menor o igual que el de la derecha
>>> 1 <= 1;
true
>>> 1 <= 2;
true
Conversiones
Si utilizamos un numero entre comillas (string) en una operación aritmética Javascript lo convierte en numero
>>> var s = "100"; typeof s;
"string"
>>> s = s * 1;
100
>>> typeof s;
"number"
¡OJO! undefined y null devuelven cosas diferentes al convertirlas a numero
>>> 1*undefined
NaN
>>> 1*null
0
Si utilizamos true or false entre comillas Javascript lo convierte en string
>>> var b = "true"; typeof b;
"string"
La doble negación !! es una forma sencilla de convertir cualquier valor en su Booleano correspondiente.
>>> !!0
false
>>> !!1
true
>>> !!""
false
>>> !!"hola"
true
>>> !!undefined
false
>>> !!null
false
Aplicandolo podemos comprobar como cualquier valor covertido a Booleano es true excepto:
""nullundefined0NaNfalse