1.12 Variables
La mayoria de programas utiles necesitan rastrear un valor a medida que cambia en el transcurso del programa o someterse a diferentes operaciones como ser llamada por tareas previstas por su programa.
La manera mas facil de hacer eso en su programa es asignar un valor a un contenedor simbolico, llamado variable -- ya que el valor en este contenedor puede variar con el tiempo, segun sea necesario --.
En algunos lenguajes de programacion, usted declara una variable(contenedor) para que contenga un tipo de valor especifico, como un numero/number o cadena de texto/string. Tipados estáticos, también conocidos como tipados de ejecucion, suele citarse como un beneficio para la corrección del programa mediante la prevención de conversiones de valores no deseados.
Otros lenguajes enfatizan tipos para los valores en lugar de variables. Tipado debil, tambien conocido como tipado dinamico, permite a una variable contener cualquier tipo de valor al tiempo. Por lo general es mencionado como un beneficio para programacion flexible permitiendo a una variable representar un valor sin importar el tipo que pueda tomar en un momento dado el flugo de la logica del programa.
JavaScript usa el ultimo concepto, tipado dinamico, lo que significa que puede contener valores de cualquier tipo sin ningun tipo de ejecucion.
Como se menciono anteriormente, declaramos una variable usando las sentencia var
-- Observer que no hay mas informacion en la sentencia. Considere este simple programa:
var amount = 99.99;
amount = amount * 2;
console.log( amount ); // 199.98
// convertimos 'amount' a string, y
// le agregamos "$" al inicio
amount = "$" + String( amount );
console.log( amount ); // "$199.98"
La variable amount inicia conteniendo el numero 99.99, y luego contiene el numero resultante de amount * 2, que es 199.98.
El primer comando console.log(...)
tiene una coercion implicita de valor number a string para imprimirlo.
Entonces la sentencia amount = "$" + String(amount)
explicitamente realiza la coercion del valor 199.98 a un string y le añade al inicio el signo "$". En este punto, amount ahora contiene un valor de tipo string "$199.98"
, asi que la segunda sentencia console.log(...)
no necesita hacer ninguna coercion para imprimir el valor.
Los desarrolladores Javascript notaran la flexibilidad de usar la variable amount
para cada uno de los valores 99.99
, 199.98
y "$199.98"
. Entuciastas del Tipado Estatico preferirian una variable independiente como amountStr
para contener la representacion final del valor "$199.98"
, ya que esta es un tipo distinto
De todas formas, usted notara que amount
contiene un valor que cambia en el transcurso del programa, que ilustra el principal proposito de las variables: gestionar/manejar el estado del programa.
En otras palabras, el estado es el seguimiento a cambios de valores en la ejecucion de su programa.
Otro uso comun para las variables es para ajustes de valora centralizado. Esto es tipicamente llamado constantes, cuando usted declara una variable con un valor y la intencion de que ese valor no cambie a lo largo del programa.
A menudo usted declarara estas constantes, al inicio del programa, y eso es muy conveniente para usted tener un lugar a donde ir para alterar un valor si lo necesitara. Por convencion, las variables JavaScript como constantes son generalmente en mayusculas, con guiones al piso _ entre palabras.
Aqui un ejemplo tonto:
var TAX_RATE = 0.08; // 8% impuestos de venta
var amount = 99.99;
amount = amount * 2;
amount = amount + (amount * TAX_RATE);
console.log( amount ); // 215.9784
console.log( amount.toFixed( 2 ) ); // "215.98"
Nota: Similar a como en console.log(...)
la funcion log(...)
accede a la propiedad de un objeto de console
, toFixed(...)
es una funcion que puede ser accedida por valores numericos. Los numeros en JavaScript no son automanticamente formateados a dolares -- el motor no sabe que moneda busca y este no tiene tipos para monedas. .toFixed(...)
nos deja especificar a cuantos decimales nos gustaria que el numero fuera redondeado, y produce el string si es necesario.
La variable TAX_RATE
es solo una constantes por convencion -- esta no tiene nada especial en el programa que prevenga que sea cambiada del inicio --. Pero si la ciudad levanta los impuestos de venta al 9%, aun podemos facilmente actualizar nuestro programa estableciendole a TAX_RATE
un valor asignado de 0.09
en un solo lugar, en lugar de buscar en todo el programa todas las veces en que aparece el valor 0.08
y actualizarlos
La ultima version de JavaScript al momento de escribir esto (llamada "ES6") incluye una nueva manera de declarar constantes, usando const en lugar de var.
// apartir de ES6:
const TAX_RATE = 0.08;
var amount = 99.99;
// ..
Las Constantes son igual de utiles a las variables que no cambian de valor, a excepcion que las Constantes tambien previenen el cambio accidental de valores en lugar diferente de la configuracion inicial. Si usted intento asignar un valor diferente a TAX_RATE
luego de la primera declaracion, su programa rechazara este cambio ( y en modo estricto, fallara con un error -- ver "Modo Estricto" en el Capitulo 2).
Por cierto, ese tipo de "proteccion" contra errores es similar al tipo de ejecucion en el tipado estatico, asi que usted podra ver por que el tipado estatico en otros lenguajes pueden ser atractivo!
Nota: Para mas informacion de como pueden ser usados diferentes valores en las variables de su programa, vea el titulo Types y Grammar de esta serie.