Hola
, en la actualidad logro diferenciar visualmente cuando es una function expression y cuando es una function statement, que una puede ser ejecutada y luego declarada y que otra es asignada como valor a una variable, sin embargo me gustaría saber cuando debería utilizar cada una, cuales son sus ventajas/diferencias y si existe alguna que es más recomendable utilizar, también leí sobre el Hoisting sin embargo me gustaría me puedan explicar un poco más sobre esto, agradezco puedan aclarar mis dudas 