segunda-feira, julho 30, 2018

Função sem retorno não é função :)

Esses dias eu caçava um bug em uma funcionalidade do sistema, quando me deparei com uma tentativa de validação em JavaScript onde havia uma função sem retorno para um dos cenários que a função poderia encontrar. Algo assim:

01: function a() {
02:     if(1==1) 
03:     {
04:       alert("STOP!");
05:       return false;
06:     }
07:     //Missed true return!
08: }
09: 
10: function b() {
11:     if(a())
12:     {
13:       //This will never occurs! Change 1==1 to 1==2 in "a" function to test.
14:       alert("Ok, go ahead!");
15:       return true;
16:     }
17:     else 
18:     {
19:       return false;
20:     }
21: }
22:
23: document.write(b() == true ? "All set" : "Something is wrong");

Já deu para reparar que sem um return fora da condição ou em um else na função a nada aconteceria na função b.
Isso mesmo que acontecia no sistema.

Parta do princípio que funções devem ter retorno sempre e não seja o amiguinho a deixar esse bug para eu resolver rs.

#pás
|--|)