Obrigado pela explicação, amigo.
Quis diferenciar os 2 pela questão de utilizar ponto nas casas decimais. Se usar vírgula acaba tendo outro resultado. E como aqui no BR o padrão é utilizar vírgula, achei que valia a pena trazer esse detalhe.
Obrigado pela explicação, amigo.
Quis diferenciar os 2 pela questão de utilizar ponto nas casas decimais. Se usar vírgula acaba tendo outro resultado. E como aqui no BR o padrão é utilizar vírgula, achei que valia a pena trazer esse detalhe.
Bom, só pra completar, este é o trecho da especificação da linguagem que define o ponto como separador decimal:
DecimalLiteral ::
DecimalIntegerLiteral . DecimalDigits[+Sep]opt ExponentPart[+Sep]opt
. DecimalDigits[+Sep] ExponentPart[+Sep]opt
Repare que antes de DecimalDigits há um ponto (.), ou seja, é o único caractere permitido para separar casas decimais em um literal numérico.
Interessante notar também que o ponto pode ser o primeiro caractere (e neste caso a parte inteira é zero), ou seja, x = .5 é o mesmo que x = 0.5.
Já no caso de usar vírgula, como por exemplo:
x = (1,2);
console.log(x); // 2
Neste caso a vírgula é um operador que vai avaliando as expressões, e retorna o valor da última. No caso, 1,2 é uma expressão com o operador vírgula e dois operandos (os números 1 e 2). Ele avalia o valor de cada uma delas (que no caso é o próprio valor numérico) e retorna o valor da última (ou seja, 2). Por isso x vale 2 ao final da execução.
Vale notar que sem parênteses muda:
x = 1,2;
console.log(x); // 1
Porque neste caso os operandos são a expressão x = 1 e o número 2 (porque a vírgula tem precedência menor que o =). Embora o resultado do operador vírgula ainda seja 2 (pois é o valor da última expressão avaliada), x = 1 foi executado de forma "independente" (antes de avaliar o valor da expressão 2), por isso o valor de x ao final é 1.
De qualquer forma, foi muito bom tocar neste ponto, pois usar a vírgula achando que vai funcionar é um erro bem comum entre iniciantes (não só em JS, inclusive).
Nossa. Agora você explodiu minha mente hahahah Eu nunca parei pra ler as especificações tão a fundo assim.