Qual é o propósito de um símbolo de mais antes de uma variável?

Isso realmente soa como uma pergunta simples, mas eu não tive sorte em procurar. o que faz o +d em

 function addMonths(d, n, keepTime) { if (+d) { 

significa?

   

O operador + retorna a representação numérica do object. Então, no seu caso particular, parece estar predicando o se ou não d é um número diferente de zero.

Referência aqui . E, como apontado nos comentários, aqui .

É um operador “+” unário que produz uma expressão numérica. Seria o mesmo que d*1 , eu acredito.

Como explicado em outras respostas, converte a variável em um número. Especialmente útil quando d pode ser um número ou uma function que avalia um número.

Exemplo (usando a function addMonths na pergunta):

 addMonths(function(){return x*y;}, 1, true); addMonths(34,1,true); addMonths("34",1,true); 

então o +d irá avaliar um número em todos os casos. Evitando assim a necessidade de verificar o tipo e tomar caminhos de código diferentes, dependendo se d é um número, uma function ou uma sequência que pode ser convertida em um número.