Funciones
function sum(a, b) {
var c = a + b;
return c;
}
Las funciones nos permiten agrupar varias líneas de código bajo un nombre. De esta forma podemos reutilizar este código, invocando el nombre de la función.
Las partes de una función:
- La sentencia
function - El nombre de la función (sum)
- Parámetros (argumentos) que espera la función (a y b) Una función puede aceptar cero o más argumentos separados por comas
- Un bloque de código, también llamado el cuerpo de la funcion
- La sentencia
return
Una función siempre devuelve un valor.
Si no devuelve explícitamente un valor, implícitamente devuelve el valorundefined
Una función solo puede devolver un valor.
Si se necesita devolver mas de un valor, se puede devolver un array o un objeto con esos valores
Para llamar a una función tan solo tenemos que usar su nombre seguido de algunos parámetros (o ninguno) entre paréntesis
>>> var result = sum(1, 2);
>>> result;
3
Parametros
Una función puede no requerir parámetros, pero si los requiere y no se les pasa a la función, Javascript les asignará el valor undefined
Si la función recibe mas parámetros de los esperados, simplemente los ignorará
Dentro de cada función tenemos disponible el objeto (pseudo-array) arguments que contiene los argumentos pasados a la función
function sumOnSteroids() {
var i, res = 0;
var number_of_params = arguments.length;
for (i = 0; i < number_of_params; i++) {
res += arguments[i];
}
return res;
}
Funciones pre-definidas
Hay una serie de funciones que están directamente definidas dentro del motor de Javascript. Estas funciones pre-definidas son:
parseInt()parseFloat()isNaN()isFinite()encodeURI()decodeURI()encodeURIComponent()decodeURIComponent()eval()
parseInt()
parseInt() toma un valor e intenta transformarlo en número entero.
Si falla devuelve NaN.parseInt() admite un segundo parámetro opcional que indica la base del numero que se le está pasando (decimal, hexadecimal, binario, etc…)
>>> parseInt('123')
123
>>> parseInt('abc123')
NaN
>>> parseInt('1abc23')
1
>>> parseInt('123abc')
123
Se recomienda especificar siempre la base (10 normalmente) para evitar problemas de interpretaciones
>>> parseInt(" 0xF", 16);
15
>>> parseInt(" F", 16);
15
>>> parseInt("17", 8);
15
>>> parseInt(021, 8);
15
>>> parseInt("015", 10);
15
>>> parseInt(15.99, 10);
15
>>> parseInt("FXX123", 16);
15
>>> parseInt("1111", 2);
15
>>> parseInt("15*3", 10);
15
>>> parseInt("15e2", 10);
15
>>> parseInt("15px", 10);
15
>>> parseInt("12", 13);
15
parseFloat()
parseFloat() toma un valor e intenta transformarlo en número de coma flotante (con decimales).
>>> parseFloat('123')
123
>>> parseFloat('1.23')
1.23
>>> parseFloat('1.23abc.00')
1.23
>>> parseFloat('a.bc1.23')
NaN
isNan()
isNan() comprueba si el valor que se le pasa es un numero válido (devuelve true en caso de que no lo sea)
>>> isNaN(NaN)
true
>>> isNaN(123)
false
>>> isNaN(1.23)
false
>>> isNaN(parseInt('abc123'))
true
isFinite()
isFinite() comprueba si el valor que se le pasa no es ni Infinity ni NaN
>>> isFinite(Infinity)
false
>>> isFinite(-Infinity)
false
>>> isFinite(12)
true
>>> isFinite(1e308)
true
>>> isFinite(1e309)
false
encodeURI()
encodeURI() Nos permite ‘escapar’ (codificar) una URL reemplazando algunos caracteres por su correspondiente secuencia de escape UTF-8.
encodeURI() nos devuelve una URL usable (solo codifica algunos caracteres)
>>> var url = 'http://www.packtpub.com/scr ipt.php?q=this and that';
>>> encodeURI(url);
http://www.packtpub.com/scr%20ipt.php?q=this%20and%20that
decodeURI()
decodeURI() Nos permite ‘decodificar’ un string codificado por encodeURI()
encodeURIComponent() y decodeURIComponent()
encodeURIComponent() y decodeURIComponent() Lo mismo que
encodeURI()` pero esta función codifica (decodifica) TODOS los caracteres transformables
>>> encodeURIComponent(url);
"http%3A%2F%2Fwww.packtpub.com%2Fscr%20ipt.php%3Fq%3Dthis%20and%20that"
eval()
eval() toma una cadena de texto y la ejecuta como código Javascript
eval() no debe utilizarse básicamente por 2 motivos:
- Rendimiento: Es mucho más lento evaluar código “en vivo” que tenerlo directamente en el script
- Seguridad: Teniendo en cuenta que ejecuta todo lo que se le pase puede ser un agujero de seguridad.
>>> eval('var ii = 2;')
>>> ii
2
alert()
alert() Nos muestra una ventana con un stringalert() no es parte del core JS pero está disponible en todos los navegadores
¡OJO! alert() para el código hasta que se acepte el mensaje