Como declarar una función en JavaScript - Clase 4.6

WO

const c = console.log const multiplicar = (a , b) => a * b c(multiplicar(2, 8))

por que c asi si c es una constante no una función, no entiendo que pasa aca

11respuestas
FrontendJavascriptProgramación
WO

si fuera una función c no deberia ser asi:

const c() = console.log

y por que se le asigna console.log no se supone que una funcion es asi:

const c = (a, b) => { //codigo }

escribi asi por que no me dejo ediar la publicación

Avatar

Los paréntesis () se usan solo para ejecutar una función pero no para definirla. Ejemplo:

const c = console.log
c(5) // 5

En la linea uno, si yo igualara c = console.log() estaría ejecutando la función console.log en lugar de asignarla a la constante c

Sobre tu otra pregunta, es verdad que una función es const c = (parametros) => {codigo} pero en este caso console.log es una funcion que ya existe, por eso simplemente se le asigna a una constante para poder reutilizarla.

WO

Muchas gracias por la respuesta, lo de los parentesis si lo entiendo bien, se usan solo parae ejecutar el codigo de la función, lo que no me quedaba claro erá por que const c es una función

entiendo que const c = console.log es una función cuyo parametro es console.log o apunta a su codigo pero no tiene retorno, es correcto o me equivoco?

WO

yo realice el typeof en el navegador como enseñas en el curso y vi que c es una función no una constante y por eso tengo este enredo

Avatar

Edité el título de tu pregunta para que se entienda mejor y más personas puedan ayudate.

Avatar

Los "()" se usan para llamar (ejecutar el condigo) a la función, no para declararlo

//Estas declarando la constante de nombre 'c' y esta apunta (hacer referencia) al código del método _log_ del objeto _console_
const c = console.log

//ahora el método _log_ lo puedes mandar a llamar (ejecutar) de dos formas
//1
console.log(c)
console.log("Hola")
//2
c(console.log)
c("hola")

Es posible que las arrow functions te estén creando una confusión

//Declarando con 1 parámetro
const hi = nombre => console.log(`Hi ${nombre}!`)
hi("Pedro")

//Declarando función sin parámetros, 
const hola = () => console.log("Hola!)
hola()
WO

Amigo gracias por la respuesta muy clara la explicación, pero le pido disculpas apenas estoy estudiando Js y se me hace complejo, const hi = nombre => console.log(Hi ${nombre}!) en esa linea de codigo no debía ir nombre dentro de parentesis? asi: const hi = (nombre) => console.log(Hi ${nombre}!) o los paréntesis se pueden omitir para los parámetros?

Avatar

Las respuestas anteriores están muy bien. Para complementar:

No puedes hacer esto:

const a() = console.log

Debido a que estás declarando una constante y la constante no puede tener paréntesis en el nombre.

WO

anteriormente estudie java y en java se hace asi para una funcion sin inicializar public string My function(); pense que aca era parecido

Avatar

Como te va wilson yo tengo la misma duda... pero creo que hacer una función de una forma u otra es lo mismo (solo que actualmente se usa como "const")

const nombre (parámetros) {código}

function nombre (parámetros) {código }```
Avatar

retiro lo dicho wilson.... ya aclare todas mis dudas. Para formar una función normal se utiliza function nombre (parametros) {codigo} Pero para crear una función de tipo flecha debes hacerlo como una variable constante (por eso se utiliza "const") const nombre = (parametros) => codigo Espero haber sido claro. Saludos

Recuerda iniciar sesión para participar en la comunidad.