Knowledge base
es
es
  • Base de conocimiento
  • Bash scripting
    • Echemos un vistazo
  • Jenkins
    • Echemos un vistazo
  • Kafka
    • Echemos un vistazo
  • Kubernetes / Docker
    • Echemos un vistazo
  • Node.js
    • Echemos un vistazo
    • Node binary executable
      • Evaluando dinámicamente el código
      • Precarga de módulos
      • Límite de pila de datos (Stack trace)
    • Depuración y diagnóstico
    • Enfoque práctico de javascript
      • Tipos de datos
      • Funciones
      • Herencia de prototipos
        • Funcional
        • Funciones de constructor
        • Constructor (Class-Syntax)
      • Closure scope
    • Paquetes y dependencias
      • Inicializando paquetes
      • Dependencias
      • Package scripts
    • Sistema de módulos
    • Flujo de control asíncrono
      • Callbacks
      • Promises
      • Async/await
  • OAuth 2.0 / OpenID Connect
    • Echemos un vistazo
    • OpenID Connect
    • OAuth 2.0
      • Mejores prácticas de cómo manejar tokens
  • OpenShift
    • Echemos un vistazo
  • OWASP
    • Echemos un vistazo
  • SAML 2.0
    • Echemos un vistazo
  • SSL / TLS
    • Echemos un vistazo
  • Terraform
    • Echemos un vistazo
Powered by GitBook
On this page
  • Ejemplos:
  • Una función que retorna otra función.
  • Una función transferida a otra función como argumento.
  • Una función asignada a un objeto.
  • El método call puede ser usado para setear un contexto.
  • Funciones fat arrow o lambda.

Was this helpful?

  1. Node.js
  2. Enfoque práctico de javascript

Funciones

Una función es un objeto, que puede ser utilizado como cualquier otro valor.

Ejemplos:

Una función que retorna otra función.

function primera () {
  return function segunda () {}
}

Una función transferida a otra función como argumento.

setTimeout(function () {
    console.log("Función como argumento");
}, 100);

Una función asignada a un objeto.

This referencia al objeto en donde la función fue invocada (contexto), no al objeto al que se asignó la función.

const obj = {
    id: 12345,
    fn: function() {
        console.log(this.id);
    }
};
obj.fn(); // 12345
const obj = {
    id: 1,
    fn: function() {
        console.log(this.id);
    }
};
const obj2 = {
    id: 2,
    fn: obj.fn
};
obj2.fn(); // 2
obj.fn(); // 1

El método call puede ser usado para setear un contexto.

function fn() {
    console.log(this.id);
}
const obj1 = {
    id: 1
};
const obj2 = {
    id: 2
};
fn.call(obj2); // 2
fn.call(obj1); // 1
fn.call({
    id: 'testing'
}); // testing

Funciones fat arrow o lambda.

Cuando la definimos sin llaves, la expresión que sigue es la que retornaremos.

No tiene su propio contexto, cuando referenciamos un this buscará la función padre no-lambda.

Ejemplo:

function fn() {
    return (offset) => {
        console.log(this.id + offset)
    }
}
const obj = {
    id: 999
}
const offsetter = fn.call(obj)
offsetter(1) // 1000 (999 + 1)

No tiene la propiedad prototype.

function normalFunction() {}
const fatArrowFunction = () => {}
console.log(typeof normalFunction.prototype) // 'object'
console.log(typeof fatArrowFunction.prototype) // 'undefined'
PreviousTipos de datosNextHerencia de prototipos

Last updated 3 years ago

Was this helpful?