O problema típico levantado para a concatenação de cadeias de caracteres gira em torno de alguns problemas:
- o
+
símbolo está sendo sobrecarregado
- erros simples
- programadores sendo preguiçosos
# 1
O primeiro e mais importante problema com o uso +
para concatenação e adição de strings é que você está usando +
para concatenação e adição de strings .
se você tiver variáveis a
e b
, e definir c = a + b
, há uma ambiguidade dependente dos tipos de a
e b
. Essa ambiguidade força você a tomar medidas extras para atenuar o problema:
Concat de String:
c = '' + a + b;
Adição:
c = parseFloat(a) + parseFloat(b);
Isso me leva ao meu segundo ponto
# 2
É muito fácil converter acidentalmente uma variável em uma string sem perceber. Também é fácil esquecer que sua entrada está chegando como uma string:
a = prompt('Pick a number');
b = prompt('Pick a second number');
alert( a + b );
Produzirá resultados não intuitivos porque prompt retorna o valor da string da entrada.
# 3
Precisando digitar parseFloat
ou Number()
toda vez que eu quero fazer adição é tedioso e irritante. Eu me considero inteligente o suficiente para lembrar de não estragar meus tipos dinâmicos, mas isso não significa que nunca estraguei meus tipos dinâmicos . A verdade é que tenho preguiça de digitar parseFloat
ou Number()
toda vez que faço acréscimo, porque faço muito acréscimo.
Solução?
Nem todos os idiomas usam +
para concatenação de cadeias. O PHP usa .
para concatenar cadeias de caracteres, o que ajuda a distinguir entre quando você deseja adicionar números e quando deseja associar cadeias.
Qualquer símbolo pode ser usado para concatenar seqüências de caracteres, mas a maioria já está sendo usada, e é melhor evitar a duplicação. Se eu tivesse o que queria, provavelmente usaria _
para juntar seqüências de caracteres e proibir os _
nomes de variáveis.
bad
. Quem éEveryone
?