Web BizarroWeb Bizarro

Suscríbete a nuestro Newsletter

X

Únete a nuestra lista de correos para recibir semanalmente actualizaciones de nuestro contenido.

10 términos que debes conocer de JavaScript I

10 términos que debes conocer de JavaScript I 05.AUG.15

Alvaro José Rios Ch
Fundador WebBizarro

Muchos de ustedes tal vez han escuchado de cosas como VanillaJS y piensan que se trata de algún framework nuevo entonces deben leer esta lista con los 10 términos que debe conocer todo programador JavaScript. Esta es la primera parte de este post por lo que colocaremos los primeros 5.

 

Arity

Es una palabra del latín, que es usada para indicar el numero de argumentos o operandos en una función o operación respectivamente. En el mundo de JavaScript se usa para indicar el número de argumentos que tiene una función.

function getName(first, middle, last){
    return first+' '+ middle +' '+last;
}

La función anterior tiene un arity de 3.

 

Anónimo

Este es un adjetivo que se usa para referirse a algo o alguien que no tiene nombre o no puede ser identificado. De la misma forma en JavaScript una función es anonima cuando no tiene un nombre.

(function (){

  //body

})();

Esta función es inmediatamente llamada, sin embargo una función como esta

var foo = function() {

};

También es llamada anónima porque no tiene un nombre después del keyword function.

 

Closure

Este es un termino ingles que según el diccionario de oxford significa “Una cosa que cierra o sella algo, como una gorra o una corbata”.

Una función encierra a otra interna cuando esta puede ser accedida desde el exterior, sin embargo las variables de estas funciones mantienen su comunicación con el exterior a través de la función externa.

Si se que es algo complicado de entender pero déjenme ponerlo así, imaginen un restaurante donde llaman al mesero y hacen una orden, el va a la cocina y luego sale con su comida, pero ustedes no pueden pasar a la cocina y ver que es lo que pasa. Imaginen que su orden es la entrada de la función y la salida es la comida, la función sería algo así.

function order() {

    var food;  

    function waiter(order) {
        chef(order);
        return food;
    }

    function chef(order) {
        if (order === 'pasta') {
            food = ['pasta', 'gravy', 'seasoning'];
            cook();
        }
    }
    function cook() { food.push('cooked'); }
    return waiter;
}

var myOrder = order();
console.log(myOrder('pasta'));
// Array [ "pasta", "gravy", "seasoning", "cooked" ]

Como pueden ver solo interactuamos con el mesero (waiter) y sus variables, el resto de la cocina esta oculta para nosotres.

 

Currying

Esto se llama así por Haskell Curry que fue el primero en usar varias funciones con un simple argumento en vez de una función con múltiples argumentos. Para que me entiendan mejor veamos un ejemplo.

function addx(x){
    function addy(y){
        return x+y;
    }
    return addy
}

function add(x,y){
    return(x+y);
}

console.log(addx(3)(4)); \\7
console.log(add(3,4)); \\7

Podemos ver que las dos funciones devuelven el mismo resultado, pero la primera recibe primero el valor del parámetro “x” y retorna una función que recibe el parámetro “y” y lo suma con “x”, si ustedes dirán que esto es una perdida de tiempo pero veamoslo de esta manera.

var add4 = addx(4);
console.log(add4(8)); //12
console.log(add4(6)); //10
console.log(add4(-74)); //-70

De esta forma se ve más interesante no es así, fíjense que pueden crear funciones para sumar lo que quieran, esto es algo muy útil cuando necesitamos crear funciones dinámicas.

 

Hoisting

Esta palabra significa levantar algo y en JavaScript significa lo mismo, subir las declaraciones al principio del documento.

Esto no ocurre cuando escribes el código sino en el tiempo de evaluación del script (a menos de que uses el modo strict). Por lo tanto es posible escribir la llamada a la función antes que el código de la función.

var name = 'Velma';
console.log(sayCatchPhrase(name)); //"Jinkies!"

function sayCatchPhrase(name) {
    phrases = {
        'Fred Flintstone': 'Yabba dabba doo!',
        'Velma': 'Jinkies!',
        'Razor': 'Bingo!',
        'He-Man': 'I Have the Power'
    };
    return phrases[name];
}