non so a quale ringuaggio stai facendo riferimento,
però se fai riferimento a javascript (ma vale per molti linguaggi di scripting. Es anche per il php), la risposta è che succede quel che descrivi, perché si tratta di linguaggi "non-tipizzati": questo significa che non c'è bisogno di dichiarare il tipo di variabili, ma il tipo delle variabili viene scelto e/o convertito in automatico.

Insomma non hai bisogno di dichiare

String saluto;
saluto="ciao";

come ad esempio in Java.

Semplicemente scrivi:
saluto=ciao;
e l'interprete ti crea una variabile di tipo stringa con valore "ciao".
(se vuoi:
var saluto="ciao";
ma questo riguarda l'ambito della variabile, che è tutt'altro discorso).

Nel tuo caso 1:
sta sia per l'intero 1
sia per il booleano true (1 e true sono sinonimi).

Quindi:
- la tua funzione ti restituisce 1
- 1 viene convertito in true
- quando una condizione è true il contenuto dell'if viene eseguito.

Spero di essere stato chiaro.

Qualche risorsa:

variabili:
http://www.html.it/javascript/javasc...ascript_19.htm

uso dell'if:
http://www.html.it/javascript/javasc...ascript_29.htm


valori di ritorno:
http://www.html.it/javascript/javasc...ascript_29.htm


ambito delle funzioni:
http://www.html.it/javascript/javasc...ascript_25.htm