Oi Jaques, tudo bem?
Fico feliz em ver que está estudando JavaScript e buscando entender melhor os conceitos abordados no curso.
Com relação à sua dúvida, a função que você mencionou (a, b) => a-b é chamada de função de comparação ou callback de ordenação, e é utilizada juntamente com o método sort() para ordenar um array de valores.
Essa função recebe dois parâmetros (a e b) que representam os elementos a serem comparados. A lógica por trás dessa função é simples: se o resultado da subtração de a por b for um número negativo, significa que a vem antes de b na ordem desejada. Se for zero, a ordem não importa. Se for positivo, a vem depois de b na ordem desejada.
Vamos exemplificar isso com um array de números simples:
const numeros = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
Se quisermos ordenar esse array em ordem crescente, podemos usar a função de comparação da seguinte forma:
numeros.sort((a, b) => a - b);
O resultado será o seguinte:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
Como você pode ver, a função de comparação é responsável por dizer ao método sort() qual a ordem desejada para os elementos do array. No caso, estamos ordenando os números em ordem crescente, ou seja, do menor para o maior.
Com relação à sua sugestão de função (a, b) => a < b, ela até pode funcionar em alguns casos, mas não é uma forma muito eficiente ou segura de fazer a ordenação. Isso porque essa função retorna true se a é menor que b e false caso contrário, o que não é suficiente para garantir que a ordenação seja sempre consistente.
Por exemplo, se tivermos um array de objetos com a seguinte estrutura:
const pessoas = [
{ nome: 'João', idade: 20 },
{ nome: 'Maria', idade: 25 },
{ nome: 'Pedro', idade: 18 }
];
E tentarmos ordená-lo com a função (a, b) => a < b, teremos um resultado imprevisível, já que a comparação será feita com base no primeiro atributo do objeto (nome), que não necessariamente define a ordem desejada.
Por isso, é sempre importante utilizar uma função de comparação que seja consistente e adequada para o tipo de dados que estamos ordenando. A função (a, b) => a-b é uma forma simples e eficiente de fazer a ordenação de números em ordem crescente ou decrescente. Para ordenar outros tipos de dados, é preciso criar funções de comparação adequadas para cada caso.
Espero que tenha te ajudado.
Um abraço e bons estudos.