Ну на вскидку
function doCompare(a, b) {
var r = a-b;
if (isNaN(r)) {
r = isNaN(a)-isNaN(b);
if (r == 0) {
r = a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase());
}
}
return r;
}
Фичей будет то что распознает числа в виде hex и так далее :)
А вообще нормально было, хотя не понятно зачем такое сравнение.
Если профайл говорит что функция критична, то надо смотреть что чаще встречается и переделать так что бы чаще встречаемое было первым при проверках. То что у меня выше — лучше работает если много цифр.
Если профилирование не было и вообще это ради искусства, то лучше не трогать :)