ho capito l'errore , avevo un return true dopo il .each , mi aspettavo che se trovava il return false non avrebbe continuato , invece esce e esegue anche il return true fuori dal .each, allora ho modificato così :

codice:
    function controlla_e_invia() {



        //console.log('dentro controlla e invia');


        var invia_form = true;




        $(".class_descrizione").each(function(e) {


            //return false;




            console.log('dentro each');


            var id_descrizione = $(this).attr("id");


            var descrizione = $('#' + id_descrizione).val()


            var id_to_get = id_descrizione.split('_');


            //console.log('|' + id_to_get);




            var quantita = $('#id_class_quantita_' + id_to_get[3]).val();
            var um = $('#id_class_um_' + id_to_get[3]).val();


            //console.log('um ' + um);


            if (descrizione && (quantita == '' || um == '')) {


                alert('Quando inserisci la descrizione devi anche inserire quantita e unità di misura alla riga ' + id_to_get[3]);


                invia_form = false;
            }


        });


        return invia_form;


    }