Se eu usar:
1.09 * 1; // returns "1.09"
Mas se eu usar:
1,09 * 1; // returns "9"
Eu sei que 1,09 não é um número.
O que a vírgula faz na última parte do código?
Mais exemplos
if (0,9) alert("ok"); // alert
if (9,0) alert("ok"); // don't alert
alert(1); alert(2); alert(3); // 3 alerts
alert(1), alert(2), alert(3); // 3 alerts too
alert("2",
foo = function (param) {
alert(param)
},
foo('1')
)
foo('3'); // alerts 1, 2 and 3
javascript
comma-operator
Topera
fonte
fonte
alert
leva apenas um argumento. Qualquer coisa depois disso é descartada.arguments
objeto, que pode ter qualquer comprimento). Mesmo com o JS compilado moderno, não haveria como dizer com antecedência quantos argumentos uma função levaria. Considere o seguinte:function test() { args=[]; for (var i = 0; i < arguments.length; i++) { args.push(arguments[i] + 1); } ;
o interpretador teria que saber como a função estava sendo usada para saber quantos argumentos seriam necessários. Em vez disso, avalia tudo.Respostas:
Fonte: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
Por exemplo, a expressão é
1,2,3,4,5
avaliada como5
. Obviamente, o operador vírgula é útil apenas para operações com efeitos colaterais.fonte
for
loop.continue
pontos sem duplicação, mas você não deve ter várioscontinue
pontos.Mais alguns a considerar:
fonte
alert("1", alert("2", alert("3")))
last
operando.Dê uma olhada aqui - a vírgula significa várias expressões / declarações. Por exemplo, em seu código, você pode usar uma linha como esta:
Isso declararia todas as três variáveis sem escrever:
Espero que ajude.
fonte
var
declarações não usam o operador vírgula , embora seja uma vírgula) e (2) você não pode separar declarações usando os operadores de vírgula; apenas expressões são permitidas.https://stackoverflow.com/a/3561056/5934465
Deve ser assim!
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
fonte
a,b,c,d
is((((a),b),c),d)
Adicionar / modificar propriedades a um objeto e retorná-lo na mesma linha é um possível caso de uso:
A função anônima acima retorna um objeto com valores aleatórios maiores que o valor de entrada ou, se não houver nenhum, com o próprio valor de entrada em uma matriz contida na
bigger
propriedade.Ainda é um açúcar sintático (como funções de seta ), mas encurta o número de linhas ... Gostaria de saber se alguns minificadores JS detectam e ajustam o código de maneira semelhante automaticamente. Execute-o em seu console:
fonte