Valores, Tipos y Operadores - JavaScript Elocuente
Valores, Tipos y Operadores - JavaScript Elocuente
Capítulo 1 ◀◆▶
Valores, tipos y operadores
“ Debajo de la superficie de la máquina, el programa se mueve. Sin esfuerzo, se expande
y se contrae. En gran armonía, los electrones se dispersan y reagrupan. Las formas en
el monitor no son más que ondas en el agua. La esencia permanece invisible debajo.”
— Maestro Yuan-Ma, El libro de la programación
Dentro del mundo de la computadora, sólo hay datos. Puede leer datos,
modificar datos, crear datos nuevos, pero lo que no son datos no se puede
mencionar. Todos estos datos se almacenan como largas secuencias de bits y,
por tanto, son fundamentalmente iguales.
Los bits son cualquier tipo de cosas con dos valores, generalmente descritas
como ceros y unos. Dentro de la computadora, toman formas como una carga
eléctrica alta o baja, una señal fuerte o débil, o una mancha brillante u opaca en
la superficie de un CD. Cualquier fragmento de información discreta puede
reducirse a una secuencia de ceros y unos y, por tanto, representarse en bits.
https://eloquentjavascript.net/01_values.html 1/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
0 0 0 0 1 1 0 1
128 64 32 16 8 4 2 1
Valores
Para poder trabajar con tales cantidades de bits sin perdernos, debemos
separarlos en fragmentos que representen fragmentos de información. En un
entorno JavaScript, esos fragmentos se denominan valores . Aunque todos los
valores están hechos de bits, desempeñan funciones diferentes. Cada valor
tiene un tipo que determina su función. Algunos valores son números, algunos
valores son fragmentos de texto, algunos valores son funciones, etc.
https://eloquentjavascript.net/01_values.html 2/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
Números
Los valores del tipo numérico son, como era de esperar, valores numéricos. En
un programa JavaScript, se escriben de la siguiente manera:
13
https://eloquentjavascript.net/01_values.html 3/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
9.81
Para números muy grandes o muy pequeños, también puedes usar la notación
científica agregando una e (para exponente ), seguida del exponente del
número.
2.998e8
8
Esto es 2,998 × 10 = 299.800.000.
Se garantiza que los cálculos con números enteros (también llamados números
enteros ) menores que los 9 cuatrillones antes mencionados serán siempre
precisos. Desafortunadamente, los cálculos con números fraccionarios
generalmente no lo son. Así como π (pi) no puede expresarse con precisión
mediante un número finito de dígitos decimales, muchos números pierden algo
de precisión cuando solo hay 64 bits disponibles para almacenarlos. Es una
pena, pero sólo causa problemas prácticos en situaciones específicas. Lo
importante es ser consciente de ello y tratar los números digitales fraccionarios
como aproximaciones, no como valores precisos.
Aritmé t ic a
Lo principal que tiene que ver con los números es la aritmética. Las
operaciones aritméticas como la suma o la multiplicación toman dos valores
numéricos y producen un nuevo número a partir de ellos. Así es como se ven en
JavaScript:
100 + 4 * 11
https://eloquentjavascript.net/01_values.html 4/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
Pero, ¿el ejemplo significa “suma 4 y 100 y multiplica el resultado por 11”, o la
multiplicación se realiza antes de la suma? Como habrás adivinado, la
multiplicación ocurre primero. Pero como en matemáticas, puedes cambiar
esto poniendo la suma entre paréntesis.
( 100 + 4 ) * 11
Los dos primeros son Infinity y -Infinity , que representan los infinitos
positivos y negativos. Infinity - 1 está quieto Infinity , y así
sucesivamente. Sin embargo, no confíes demasiado en la computación basada
https://eloquentjavascript.net/01_values.html 5/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
Instrumentos de cuerda
`Abajo en el mar`
"Acuéstate en el océano"
'Flota en el océano'
Casi cualquier cosa se puede poner entre comillas y JavaScript creará un valor
de cadena a partir de ello. Pero algunos personajes son más difíciles. Puedes
imaginar lo difícil que puede ser poner comillas entre comillas. Las nuevas
líneas (los caracteres que aparecen al presionar Intro ) se pueden incluir sin
escapes solo cuando la cadena se cita con comillas invertidas ( ` ).
Para que sea posible incluir dichos caracteres en una cadena, se utiliza la
siguiente notación: siempre que \ se encuentra una barra invertida ( ) dentro
del texto entre comillas, indica que el carácter que sigue tiene un significado
especial. A esto se le llama escapar del personaje. Una comilla precedida por
una barra invertida no finalizará la cadena, sino que será parte de ella. Cuando
un n carácter aparece después de una barra invertida, se interpreta como una
nueva línea. De manera similar, t después de una barra invertida significa un
carácter de tabulación. Tome la siguiente cadena:
https://eloquentjavascript.net/01_values.html 6/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
Por supuesto, hay situaciones en las que desea que una barra invertida en una
cadena sea solo una barra invertida, no un código especial. Si dos barras
invertidas se suceden, se contraerán juntas y solo quedará una en el valor de
cadena resultante. Así es como la cadena " Un carácter de nueva línea se
escribe como " \n " ". ” se puede expresar:
Las cadenas también deben modelarse como una serie de bits para poder
existir dentro de la computadora. La forma en que JavaScript hace esto se basa
en el estándar Unicode . Este estándar asigna un número a prácticamente
todos los caracteres que pueda necesitar, incluidos caracteres del griego, árabe,
japonés, armenio, etc. Si tenemos un número para cada carácter, una cadena
puede describirse mediante una secuencia de números.
https://eloquentjavascript.net/01_values.html 7/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
Los valores de cadena tienen una serie de funciones asociadas ( métodos ) que
se pueden utilizar para realizar otras operaciones sobre ellos. Diré más sobre
esto en el Capítulo 4 .
Las cadenas escritas con comillas simples o dobles se comportan de forma muy
parecida: la única diferencia es qué tipo de comillas debes escapar dentro de
ellas. Las cadenas entre comillas invertidas, generalmente llamadas literales de
plantilla , pueden hacer algunos trucos más. Además de poder abarcar líneas,
también pueden incorporar otros valores.
No todos los operadores son símbolos. Algunas están escritas como palabras.
Un ejemplo es el typeof operador, que produce un valor de cadena que
nombra el tipo de valor que le asigna.
Todos los demás operadores mostrados operaron con dos valores, pero
typeof solo toman uno. Los operadores que utilizan dos valores se denominan
operadores binarios , mientras que los que toman uno se denominan
operadores unarios . El operador menos se puede utilizar como operador
binario y como operador unario.
https://eloquentjavascript.net/01_values.html 8/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
valores b ooleanos
A menudo resulta útil tener un valor que distinga sólo entre dos posibilidades,
como "sí" y "no" o "encendido" y "apagado". Para ello, JavaScript tiene un tipo
booleano , que tiene sólo dos valores, verdadero y falso, que se escriben como
esas palabras.
Compar ación
Los signos > y < son los símbolos tradicionales de "es mayor que" y "es menor
que", respectivamente. Son operadores binarios. Su aplicación da como
resultado un valor booleano que indica si son verdaderos en este caso.
Otros operadores similares son >= (mayor o igual que), <= (menor o igual que),
== (igual que) y != (distinto de).
https://eloquentjavascript.net/01_values.html 9/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
NaN se supone que denota el resultado de un cálculo sin sentido y, como tal, no
es igual al resultado de ningún otro cálculo sin sentido.
También hay algunas operaciones que se pueden aplicar a los propios valores
booleanos. JavaScript admite tres operadores lógicos: y , o , y no . Estos
pueden usarse para “razonar” sobre los booleanos.
Valores vacíos
Hay dos valores especiales, escrito null y undefined , que se utilizan para
indicar la ausencia de un valor significativo . Son valores en sí mismos, pero no
contienen información.
https://eloquentjavascript.net/01_values.html 11/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
https://eloquentjavascript.net/01_values.html 12/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
Ese comportamiento suele ser útil. Cuando desee probar si un valor tiene un
valor real en lugar de null o undefined , puede compararlo null con el
operador == (o ). !=
Pero ¿qué pasa si quieres comprobar si algo se refiere al valor exacto false ?
Las expresiones como 0 == false y "" == false también son verdaderas
debido a la conversión automática de tipos. Cuando no desea que se realice
ninguna conversión de tipo, existen dos operadores adicionales: === y !== . El
primero prueba si un valor es exactamente igual al otro, y el segundo prueba si
no es exactamente igual. Entonces "" === false es falso como se esperaba.
https://eloquentjavascript.net/01_values.html 13/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
Resumen
https://eloquentjavascript.net/01_values.html 14/15
7/2/24, 14:53 Valores, tipos y operadores :: JavaScript elocuente
◀◆▶
https://eloquentjavascript.net/01_values.html 15/15