Llamar a una función sin usar paréntesis en JavaScript

Introducción

Leyendo algunos artículos de GraphQL con Apollo vi una sintaxis que me llamó la atención e incluso pensé que era un error. Luego leí otro artículo que explicaba justamente eso, y es lo que vengo a compartir: cómo llamar a una función sin usar paréntesis en el lenguaje de programación JavaScript

Cómo llamar a funciones sin usar paréntesis en JavaScript

Esto tiene que ver con las backticks en JavaScript, o las llamadas plantillas de cadena. La magia que ofrecen va más allá de ofrecernos una simple concatenación sin usar operadores, además de un código más legible.

Lo que pasa es que estas string templates en JavaScript nos permiten llamar a una función sin usar paréntesis.

Llamadas normales

Bueno, sabemos que llamamos a una función así:

funcion();

O en caso de querer guardar el resultado, así:

let resultado = funcion();

También podemos llamarla con argumentos:

let resultado = funcion(miArgumento);

O con argumentos sin guardar el resultado:

funcion(miArgumento);

Pues con las template strings o backticks todo esto cambia. Podemos llamar a una función sin usar paréntesis.

Llamar a una función sin usar paréntesis

Es casi como llamar a una función normal, pero no le ponemos paréntesis y en su lugar ponemos una template string. Vamos a definir esta función que te saluda:

const saludar = nombre => {alert("Hola " + nombre);}

Si no entiendes la sintaxis recomiendo leer: Funciones flecha en JavaScript

A esa función, normalmente la podemos llamar así:

saludar("Luis");

Pero oh sí, también así:

saludar`Luis`;

Ahí no usamos paréntesis. También podemos dejar un espacio entre la función y la template string:

saludar `Luis`;

Pero si creemos que es una simple cadena y que incluso así funcionará estamos equivocados, porque si le pasamos una simple cadena así:

saludar"Luis";

Esto sucede:

Error de sintaxis si no usamos backticks
Error de sintaxis si no usamos backticks

Argumentos y valores de las template strings

Dentro de nuestra función también podemos leer los valores de la plantilla de cadena, los que son como ${valor}

Vamos a crear esta función cuyos parámetros serán un arreglo y muchos valores (una función con infinitos argumentos):

const leer = (cadenas, ...valores) => {
  console.log("Las cadenas son: ", cadenas);
  console.log("Los valores son: ", valores);
}

Ahora llamemos a esa función con un template string como argumento:

leer`Hola mundo, saben cuánto es 10 + 1? Es ${10 + 1}. Y 2 elevado a la 31 es ${2 ** 31}`;

Con el siguiente resultado:

Llamar a una función sin usar paréntesis
Llamar a una función sin usar paréntesis

Como vemos, cada cadena que está separada por un ${} forma parte del arreglo del primer argumento. Y todos los resultados de las expresiones que estén entre ${} forman parte del segundo argumento.

Así podemos traer más poder al combinar estas funciones y las string templates.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario