You are on page 1of 30

Booleano, igualdad y otros

operadores lgicos

Juan Quemada, DIT, UPM

Tipo boolean
El tipo boolean solo tiene 2 valores
n true:
verdadero
n false: falso

!
Operador negacin (negation): !
n Convierte al valor lgico opuesto

!
Conversin a boolean
n false: 0, -0, NaN, null, undefined, "", ''
n true: resto de valores

Juan Quemada, DIT, UPM

!false
!true

!
!

=> true
=> false

!4
!"4"
!null
!0

=> false
=> false
=> true
=> true

!!""
!!4

=> false
=> true

Identidad e igualdad
Igualdad estricta (identidad)
n igualdad de tipo y valor:
===
w funciona bien solo con tipos bsicos!
n Objetos: identidad de referencias
n negacin de igualdad estricta:
!==

// Identidad de tipos bsicos

Igualdad y desigualdad dbil:


== y !=
n Realiza conversiones impredecibles
w NO UTILIZAR!

0 === 0
0 === 0.0
0 === 0.00

=> true
=> true
=> true

0 === 1

=> false

0 === false

=> false

!
!

'' === ""


'' === " "

=> true
=> false

Mas info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Sameness


Juan Quemada, DIT, UPM

Operadores: &&, || y ?:
Operador lgico Y (AND): a && b
n si a evala a false
w devuelve a, sino devuelve b

0 && true
1 && "5"

=> 0
=> "5"

undefined || 0
13 || 0

=> 0
=> 13

(7) ? 0 : 1
("")? 0 : 1

=> 0
=> 1

!
!

!
Operador lgico O (OR):
a || b
n si a evala a true
w devuelve a, sino devuelve b

!
Operador condicional: (c) ? a : b;
n si c evala a true
w devuelve a, sino devuelve b

Juan Quemada, DIT, UPM

!
!

// Asignar valor por defecto


// si x es undefined o null

x = x || 0;

Operadores de comparacin
JavaScript tiene 4 operadores de comparacin
n Menor:
<
n Menor o igual: <=
n Mayor:
>
n Mayor o igual: >=

Nmeros, booleanos, strings y objetos


n tienen definida una relacin de orden
w Aunque se utilizan principalmente con nmeros

Juan Quemada, DIT, UPM

1.2 < 1.3

=> true

1< 1
1 <= 1
1> 1
1 >= 1

=> false
=> true
=> false
=> true

false < true

=> true

"a" < "b"

=> true

"a" < "a"


"a" < "aa"

=> false
=> true

!
!

Sentencia if/else

Juan Quemada, DIT, UPM

Sentencia if/else

if/else permite ejecucin condicional de


n bloques de instrucciones
Comienza por la palabra reservada if
n La condicin va despus entre parntesis
Bloque: sentencias delimitadas por {..}
n Bloque de 1 sentencia puede omitir {}
La parte else es opcional

Juan Quemada, DIT, UPM

Ejemplo con sentencia if/else


Juan Quemada, DIT, UPM

Ejemplo con
sentencia if

Juan Quemada, DIT, UPM

Ejemplo de prompt()

Juan Quemada, DIT, UPM

10

Ejemplo de else-if

Juan Quemada, DIT, UPM

11

Strings e internacionalizacin (I18N)

Juan Quemada, DIT, UPM

12

El tipo string
Texto internacionalizado codificado con el cdigo UNICODE
n

Puede representar muchas lenguas diferentes

Literales de string: textos delimitados por comillas o apstrofes


n

"hola, que tal", 'hola, que tal', ' , ' o ''


w string "hola, que tal" en varios idiomas

n
n

String vaco:
"" o ''
"texto 'entrecomillado' "
w comillas y apstrofes se pueden anidar: 'entrecomillado' forma parte del texto

Operador de concatenacin de strings: +


n

"Hola" + " " + "Pepe"

=>

"Hola Pepe"

Juan Quemada, DIT, UPM

13

Internacionalizacin (I18N)

Teclado chino

UNICODE es un consorcio internacional: http://www.unicode.org/


n

Define normas de internacionalizacin (I18N), como el cdigo UNICODE


w UNICODE puede representar muchas lenguas:

http://www.unicode.org/charts/

JavaScript utiliza solo el Basic Multilingual Plane de UNICODE


n

Caracteres codificados en 2 octetos (16 bits), similar a BMP


w UNICODE tiene otros planos que incluyen lenguas poco frecuentes

Teclado: suele incluir solo las lenguas de un pas


n

Los caracteres de lenguas no incluidas


w solo se pueden representar con caracteres escapados
w por ejemplo,'\u55e8 representa el ideograma chino ''

Teclado arabe

Pantalla: es grfica y puede representar cualquier carcter


Juan Quemada, DIT, UPM

14

Caracteres escapados
Los caracteres escapados
n son caracteres no representables dentro de un string
w comienzan por la barra inclinada (\) y la tabla incluye algunos de los ms habituales

Ademas podemos representar cualquier carcter UNICODE o ISO-LATIN-1:


n \uXXXX carcter UNICODE de cdigo hexadecimal
XXXX
n \xXX
carcter ISO-LATIN-1 de cdigo hexadecimal XX

Algunos ejemplos
n "Comillas dentro de \"comillas\""
w " debe ir escapado dentro del string
n

"Dos \n lineas"
w retorno de lnea delimita sentencias

"Dos \u000A lineas"

Juan Quemada, DIT, UPM

CARACTERES ESCAPADOS

NUL (nulo):
Backspace:
Horizontal tab:
Newline:
Vertical tab:
Form feed:
Carriage return:
Comillas (dobles):
Apstrofe :
Backslash:

\0,
\b,
\t,
\n,
\t,
\f,
\r,
\",
\',
\\,

\x00, \u0000
\x08, \u0008
\x09, \u0009
\x0A, \u000A
\x0B, \u000B
\x0C, \u000C
\x0D, \u000D
\x22, \u0022
\x27, \u0027
\x5C, \u005C
15

ciudad
Clase String
[0] [1] ........ [5]

La clase String
n

incluye mtodos y propiedades para procesar strings


n

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String

Un string es un array de caracteres

! un ndice entre 0 y nmero_de_caracteres-1 referencia cada carcter


Propiedad con tamao: 'ciudad'.length
=> 6
!
Acceso como array:
'ciudad'[2]
=> u
!
n

Mtodo:

'ciudad'.charCodeAt(2) => 117

! devuelve cdigo UNICODE de tercer carcter

Mtodo:

'ciudad'.indexOf('da')

=> 3

! devuelve posicin de substring

Mtodo:
n

'ciudad'.substring(2,5) => 'uda'

devuelve substring entre ambos ndices


Juan Quemada, DIT, UPM

16

Ejemplo I18N

Juan Quemada, DIT, UPM

17

Nmeros

Juan Quemada, DIT, UPM

18

Nmeros: tipo number


Los nmeros se representan con literales de
n
Enteros:
32
w Entero mximo: 9007199254740992
n
n

Decimales:
Coma flotante:

32.23
3.2e1 (3,2x10)

w Rango real: 1,797x10^308 --- 5x10^-324

Todos los nmeros son del tipo number

Todos los nmeros se representan igual


internamente
n
coma flotante de doble precisin (64bits)

El tipo number incluye 2 valores especiales


n
Infinity: representa desbordamiento
n
NaN: representa resultado no nmerico

10 + 4
10 - 4
10 * 4
10 / 4
10 % 4

=> 14
=> 6
=> 40
=> 2.5
=> 2

// sumar
// restar
// multiplicar
// dividir
// operacin resto

//decimales dan error de redondeo


0.1 + 0.2 => 0,3000000000004

3e2
3e-2

=> 300
=> 0,03

+10/0
-10/0

=> Infinity
=> -Infinity

//desborda
//desborda

5e500

=> Infinity

//desborda

!
!

Juan Quemada, DIT, UPM

19

Conversin a enteros
Cuando JavaScript calcula expresiones
n convirtiendo tipos segn necesita
w utiliza las prioridades de operadores

!
Conversin a entero (o real)
n booleano: true a 1, false a 0
n String: Convierte nmero a valor o NaN
n null: a 0,
undefined: a NaN

'67' + 13

=> 6713

+'67'
+ 13 => 80
+'6.7e1' + 13 => 80

!
!

'xx' + 13
+'xx' + 13

=> 'xx13'
=> NaN

13 + true
13 + false

=> 14
=> 13

!
!

Convertir un string a un nmero


n se denomina tambin parsear" o analizar sintcticamente
w es similar al anlisis sintctico realizado a los literales de nmeros
Juan Quemada, DIT, UPM

20

Modulo Math
El Modulo Math contiene
n constantes y funciones matemticas

!
Constantes
n Nmeros: E, PI, SQRT2, ...
n ...
Funciones
n sin(x), cos(x), tan(x), asin(x), ....
n log(x), exp(x), pow(x, y), sqrt(x), ....
n abs(x), ceil(x), floor(x), round(x), ....
n min(x,y,z,..), max (x,y,z,..), ...
n random()

Math.PI => 3.141592653589793


Math.E => 2.718281828459045

// numero aleatorio entre 0 y 1


Math.random() => 0.7890234

Math.pow(3,2)
Math.sqrt(9)

=> 9 // 3 al cuadrado
=> 3 // raz cuadrada de 3

Math.min(2,1,9,3) => 1 // nmero mnimo


Math.max(2,1,9,3) => 9 // nmero mximo

Math.floor(3.2)
Math.ceil(3.2)
Math.round(3.2)

=> 3
=> 4
=> 3

Math.sin(1)
=> 0.8414709848078965
Math.asin(0.8414709848078965) => 1

Mas info:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math
Juan Quemada, DIT, UPM

21

Clase Number

var x = 1.1;

La clase Number encapsula nmeros


n como objetos equivalentes

Number define algunos mtodos tiles


n toFixed(n) devuelve string
w redondeando a n decimales
n toExponential(n) devuelve string
w redondeando mantisa a n decima.
n toPrecision(n) devuelve string
w redondeando a n dgitos

JS convierte una expresin a objeto al


n aplicar el mtodo a una expresin
w Ojo! literales dan error sintctico

x.toFixed(0)
x.toFixed(2)

=> "1"
=> 1.10"

(1).toFixed(2)

=> 1.00"

1.toFixed(2)

=> Error sintctico

!
!

Math.PI.toFixed(4) => "3.1416"

(0.1).toExponential(2) => "1.00e-1"


x.toExponential(2)
=> "1.10e+0"

(0.1).toPrecision(2)
x.toPrecision(2)

=> "0.10"
=> "1.1"

Mas info:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number
Juan Quemada, DIT, UPM

22

Funciones

Juan Quemada, DIT, UPM

23

Definicin de la funcin

Funcin
Invocacin
o ejecucin
de la funcin

Nombre

Parmetros

Bloque de cdigo
delimitado por {....}

function comer(persona, comida) {


return (persona + " come " + comida);
};

comer('Jos', 'paella');

=> 'Jos come paella'

Funcin:
n bloque de cdigo con parmetros, invocable (ejecutable) a travs del nombre
w La ejecucin finaliza con la sentencia return expr o al final del bloque
n Al acabar la ejecucin, devuelve un resultado: valor de retorno

Valor de retorno
n resultado de evalar expr, si se ejecuta la sentencia return expr
n undefined, si se alcanza final del bloque sin haber ejecutado ningn return
Juan Quemada, DIT, UPM

24

Parmetros de una funcin


Los parmetros de la funcin son variables utilizables en el cuerpo de la funcin

Al invocarlas se asignan los valores de la invocacin

!
La funcin se puede invocar con un nmero variable de parmetros

Un parmetro inexistente est undefined


function comer(persona, comida) {
return (persona + " come " + comida);
};

comer('Jos', 'paella');

=> 'Jos come paella'

comer('Jos', 'paella', 'carne'); => 'Jos come paella'


comer('Jos');
=> 'Jos come undefined'
Juan Quemada, DIT, UPM

25

El array de argumentos
Los parmetros de la funcin estn accesibles tambin a travs del
n array de argumentos:
arguments[....]
w Cada parmetro es un elemento del array

En: comer('Jos', 'paella')


n arguments[0]
=> 'Jos'
n arguments[1]
=> 'paella'
function comer() {
return (arguments[0] + " come " + arguments[1]);
};

comer('Jos', 'paella');

=> 'Jos come paella'

comer('Jos', 'paella', 'carne'); => 'Jos come paella'


comer('Jos');
=> 'Jos come undefined'
Juan Quemada, DIT, UPM

26

Parmetros por defecto


Funciones invocadas con un nmero variable de parmetros
n Suelen definir parmetros por defecto con el operador ||
w "x || <parmetro_por_defecto>"

Si x es undefined, ser false y devolver parmetro por defecto


Los parmetros son variables y se les puede asignar un valor
function comer (persona, comida) {
persona = (persona || 'Alguin');
comida = (comida || 'algo');
return (persona + " come " + comida);
};

comer('Jos');
comer();

=> 'Jos come algo'


=> 'Alguien come algo'
Juan Quemada, DIT, UPM

27

Funciones como objetos


Las funciones son objetos de pleno derecho
n pueden asignarse a variables, propiedades, parmetros, ....

function literal: es una funcin que se define sin nombre


n Se suele asignar a una variable, que le da su nombre
w Se puede invocar a travs del nombre de la variable
var comer = function(persona, comida) {
return (persona + " come " + comida);
};

comer('Jos','paella');

=> 'Jos come paella'

Juan Quemada, DIT, UPM

28

Operador de invocacin de una funcin


El objeto funcin puede asignarse o utilizarse como un valor
n el objeto funcin contiene el cdigo de la funcin

el operador (...) invoca una funcin ejecutando su cdigo


n Solo es aplicable a funciones (objetos de la clase Function)
n Puede incluir una lista de parmetros separados por coma
var comer = function(persona, comida) {
return (persona + " come " + comida);
};

var x = comer;
// asigna a x el cdigo de la funcin
x('Jos','paella'); => 'Jos come paella'
x()
=> 'undefined come undefined

var y = comer();
// asigna a y el resultado de invocar la funcin
y
=> 'undefined come undefined'
Juan Quemada, DIT, UPM

29

http://vishub.org/categories/43
Seleccionar
ejemplo

Hacer clic para


actualizar pag.

Hacer clic
en el
Modulo 1

Editor
Interactivo

Juan Quemada, DIT, UPM

30

You might also like