Estou vendo sobre função ARROW e criei este código abaixo, que recebe dois parâmetros que retorna estes parâmetros como objetos e depois criei uma função que faz um calculo, porém esta me apresentando o seguinte erro.
1º Se eu comentar a função ele me retorna branco “{}”.
2º Se estiver com a função diz " que a função não esta definida.
Onde estou errando ou se estou fazendo uma coisa nada a ver.
Eu não sou especialista em função arrow, mas, acho que isso aqui nunca vai rolar, devido ao fato de você estar retornando e, após isso, ter outras linhas de código.
Pessoal, deixa eu fazer uma pergunta bem de iniciante mesmo. Percebi que tem vários tipos de função, terei que coloca-las no projeto ou posso usar somente um tipo de função?
Independente da razão, sugiro manter um padrão.
Se você opta por arrow function, por mais complexa que seja, faça apenas arrow function.
Se prefere o modo verboso, use este sempre.
Não, não.
Você tem diversas opções.
Particularmente, creio que o mais adequado é usar aquilo com o que você se sente confortável, até estudar e aprender direito as novidades/complexidades.
Então, você vai evoluindo.
E nunca se esqueça que tem coisas que funcionam sempre, no caso do js, as funções verbosas podem ser feias, do ponto de vista estético e ultrapassadas, mas, sempre irão funcionar.
Mas como vc não o está atribuindo a nenhuma variável, seu valor se perde. Faz o teste com isso:
console.log(m2(19, 50))
Esta função não foi definida mesmo. O que vc fez foi criar uma função chamada calculo dentro do escopo daquela função anonima, ela não existe fora dali.
Ele te mostra {} porque vc não passou nenhum argumento pra função, logo, ela retornou um objeto vazio.
Encontrei 2 artigos que podem te ajudar a entender o que está acontecendo de uma melhor forma:
Para outros materiais, procure por Constructor Pattern.
Sobre seu código, acredito que ele faz mais sentido assim:
Percebeu que retornei calculo junto com largura e comprimento? É assim que fazemos quando queremos expor certos dados ou comportamentos de um objeto. Do jeito como vc fez, calculo fica escondida.
Daí, pra usar o comportamento exposto, basta fazer como no meu segundo log.