Para declarar una función en JavaScript, se utiliza la palabra clave function, seguida del nombre de la función,
una lista de parámetros entre paréntesis y el cuerpo del código encerrado entre llaves { } (ej function
hola(valor) {//codigo}).
Para llamar a la función, se escribe el nombre de la funcion seguido de paréntesis () que contienen los
argumentos
correspondientes a los parámetros definidos (ej hola("Pablo"))
Que una funcion tenga parametros quiere decir que la funcion espera recibir un valor para cada parametro (como
un hueco esperando ser rellenado) para despues ejecutar su bloque de codigo con esos valores.
Mientras que el valor de retorno es lo que la funcion regresara
una vez realizado el bloque con los valores recibidos (ej. suma(a,b) {return a+b;} => suma(3,5) regresara
8)
Son una forma mas corta de hacer funciones ya que ahorra el tener que usar las palabras clave function y return y puede generar la funcion en una sola linea lo cual la hace muy versatil para trabajar siendo esta su mayor ventaja, el tener la funcion en una sola linea le da simplicidad y mayor legibilidad al codigo.
El scope o ambito determina la accesibilidad o visbilidad de las variables funcionando como un tipo de
encapsulamiento
de datos y afecta las variables de diferentes maneras:
Alcance Global: Las variables declaradas fuera de cualquier función o bloque son accesibles desde cualquier
parte del codigo, lo que puede ocasionar problemas de nombres si se usa en exceso.
Alcance Local (Funcion): Las variables declaradas dentro de una funcion solo son accesibles dentro de esa
funcino; al salir dejan de ser visibles para el resto del programa.
Alcance de Bloque: Con let y const, las variables estan limitadas al bloque de codigo especifico (como un if o
un for) donde se declararon, siendo inaccesibles fuera de estos.
Cadena de Scope: JavaScript busca variables primero en el ambito local mas cercano y, si no las encuentra, sube
jerarquicamente hasta el ambito global, lo que permite el shadowing (ocultamiento) de variables con el mismo
nombre en ambitos anidados.