August | 2012 | code snack

toString() ou +”" para converter número para string em javascript

em um outro post falei sobre a conversão “automática” de um número para string em uma concatenação em javascript.

este recurso é usado por alguns desenvolvedores para fazer a conversão para string.

var number = 897;
var numberToString = number + "";
> "897" #entre aspas em um debug para indicar que é uma string

eu não gosto deste uso mesmo que o resultado seja o desejado. o javascript oferece o método toString. e eu prefiro utilizar este método ao invés de utilizar +”".

var number = 897;
var numberToString = number.toString();
> "897" #entre aspas em um debug para indicar que é uma string

o motivo de preferir utilizar o método toString em vez de + “” é a legibilidade do código (“readability”). a concatenação com uma string vazia “” pode gerar dúvidas em um outro desenvolvedor lendo o código. esta concatenação não é totalmente clara que o objetivo é apenas uma conversão para string. acredito que o uso do método toString deixa este objetivo bem claro para os leitores do código.

dave thomas explicando o que ele pensar ser um bom código (clean code) no primeiro capítulo do livro  “Clean code” diz:

“Clean code can be read, and enhanced by a developer other than its original author…”

resposta:faz diferença em javascript? ’6′ + 7 + 8 ou 6 + 7 + ’8′? concatenação de string e número

semana passada postei uma pergunta sobre a diferença do resultado de ’6′+ 7 + 8 ou 6 + 7 + ’8′ em javascript. a concatenação de string e número em javascript pode se tornar uma “pegadinha” em alguns casos.

provavelmente você sabe que números são convertidos em string em uma concatenação. isto é um recurso bem interessante. entretanto, é importante entender como esta conversão funciona para evitar resultados inesperados.

a conversão ocorre apenas no momento em que a primeira string é adicionada.  Então:

'6' + 7 + 8
> 678

enquanto:

6 + 7 + '8'
> 138

outro ponto interessante é que isto não acontece com outras operações matematicas.

'6' + 3*3 + '7'
> 697

ou:

'6' + 3-3 + '7'
> 607