Formato de número rápido e sujo em JavaScript

Enquanto trabalhava em um sistema analítico, precisei de uma função js para converter cadeias de números em uma forma mais legível (por humanos).

Então, inspirado pela função php number_format (), eu vim com isso.

esta função assume o formato padrão italiano para números, ou seja, ‘.’ para separadores de milhares e ‘,’ para separador decimal

A função

/**
* @function jsNumberFormat

*

*
@param num
*
@param decPlaces
*
@param thouSeparator
*
@param decSeparator
* @returns {string}

*/

function jsNumberFormat(num, decPlaces, thouSeparator, decSeparator) {
decPlaces
= isNaN(decPlaces = Math.abs(decPlaces)) ? 0 : decPlaces;
decSeparator
= decSeparator == undefined ? "," : decSeparator;
thouSeparator
= thouSeparator == undefined ? "." : thouSeparator;
var sign = num < 0 ? "-" : "";
var i = parseInt(num = Math.abs(+num || 0).toFixed(decPlaces)) + "";
var j = (j = i.length) > 3 ? j % 3 : 0;
return sign + (j ? i.substr(0, j) + thouSeparator : "") + i.substr(j).replace(/(d{3})(?=d)/g, "$1" + thouSeparator) + (decPlaces ? decSeparator + Math.abs(num - i).toFixed(decPlaces).slice(2) : "");
};