DÊVIDA NO USO COLCHETES VAZIOS EM JQUERY

KELLY 04/05/2017 18:05:10
#473742
Olá a todos!

Estou estudando jQuery, mais especificamente o uso do .val(), porém me deparei com uma linha que me fez surgir uma dúvida. Sei que os colchetes [] são usados em diversos recursos, inclusive Arrays, mas no exemplo abaixo eu não consegui entender o significado dele vazio. Entendi que na variável multipleValues está sendo atribuído o valor $( [Ô]#multiple[Ô] ).val() e as || representam a dijunção OU e os colchetes vazios?

35 var multipleValues = $( [Ô]#multiple[Ô] ).val() || [];

Segue o endereço do exemplo http://api.jquery.com/val/

Grata

JABA 04/05/2017 19:26:39
#473743
Resposta escolhida
A operação formada com um [Ô]||[Ô] é um curto-circuito. Ou seja, primeiro verifica-se se a primeira parte da sentença é verdadeira, se for, ele joga o resultado na variável e não executa a outra parte da sentença (que é a parte depois do [Ô]||[Ô]). Caso contrário, se não achou nada na primeira sentença (tudo foi falso), o interpretador partirá para a segunda parte da sentença. E nessa parte, temos uma declaração de um Array vazio ([] são arrays vazios). Após a sua execução, sua variável seria preenchida com um array vazio.
KERPLUNK 04/05/2017 20:49:48
#473745
Esta estratégia é equivalente aos métodos [Ô]...OrDefault[Ô], muito comuns no .NET. Eles garantem que a execução do método não terá um null o que geralmente resulta em uma exceção. No exemplo que você mostrou, o jquery irá procurar todos os elementos cujo id seja [Ô]multiple[Ô], o que não faz sentido pois ids são geralmente únicos.
JABA 05/05/2017 01:55:25
#473747
Citação:

No exemplo que você mostrou, o jquery irá procurar todos os elementos cujo id seja [Ô]multiple[Ô], o que não faz sentido pois ids são geralmente únicos.



O exemplo que ela colocou não é dela, veio da própria documentação do JQuery.

function displayVals() {
var singleValues = $( [Ô]#single[Ô] ).val();
var multipleValues = $( [Ô]#multiple[Ô] ).val() || [];

$( [Ô]p[Ô] ).html( [Ô]<b>Single:</b> [Ô] + singleValues +
[Ô] <b>Multiple:</b> [Ô] + multipleValues.join( [Ô], [Ô] ) );
}
KELLY 05/05/2017 14:21:14
#473758
Citação:

:
Esta estratégia é equivalente aos métodos [Ô]...OrDefault[Ô], muito comuns no .NET. Eles garantem que a execução do método não terá um null o que geralmente resulta em uma exceção. No exemplo que você mostrou, o jquery irá procurar todos os elementos cujo id seja [Ô]multiple[Ô], o que não faz sentido pois ids são geralmente únicos.



Oi KERPLUNK, você estava sumido! Estou de volta apanhando no jQuery. Como o JABA comentou, este código é do próprio site do jQuery. Resolvi postar este código porque vi não só no site do jQuery, mas também em outros fóruns internacionais. O que deu a entender na sua explicação é que esta prática é incorreta, certo?
KELLY 05/05/2017 14:25:41
#473759
Citação:

:
A operação formada com um [Ô]||[Ô] é um curto-circuito. Ou seja, primeiro verifica-se se a primeira parte da sentença é verdadeira, se for, ele joga o resultado na variável e não executa a outra parte da sentença (que é a parte depois do [Ô]||[Ô]). Caso contrário, se não achou nada na primeira sentença (tudo foi falso), o interpretador partirá para a segunda parte da sentença. E nessa parte, temos uma declaração de um Array vazio ([] são arrays vazios). Após a sua execução, sua variável seria preenchida com um array vazio.



JABA, então na linha:
var multipleValues = $( [Ô]#multiple[Ô] ).val() || [];

Se $( [Ô]#multiple[Ô] ).val() for null, a variável multipleValues será uma array da mesma forma se eu definisse var multipleValues = new Array()?
JABA 05/05/2017 15:56:31
#473762
Citação:

Se $( [Ô]#multiple[Ô] ).val() for null, a variável multipleValues será uma array da mesma forma se eu definisse var multipleValues = new Array()?



Sim, isso mesmo!
Tópico encerrado , respostas não são mais permitidas