Rafael L Postado Outubro 14, 2012 Denunciar Share Postado Outubro 14, 2012 Pessoal, o que significa a expressão abaixo, mais precisamente o que está sendo avaliado entre os parênteses?var variable = (value_x = !value_x) ? 'isso' : 'aquilo' Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Arash Postado Outubro 15, 2012 Denunciar Share Postado Outubro 15, 2012 (editado) É um jeito de escrever o if, muito usado no PHP...(expressão) ? (1):(2); = if (expressão) { (1); } else { (2); } Agora value_x = !value_x Significa, se existe algum valor para value_x, essa equação é verdadeira, do contrário é falso, mas não verifica a existencia da variavel. Se a variavel não for declarada, vai dar erro na sua página. EX: // vai voltar 'isso' var value_x; var variable = (value_x = !value_x) ? 'isso' : 'aquilo'; // vai voltar aquilo. var value_x = "teste"; var variable = (value_x = !value_x) ? 'isso' : 'aquilo'; // vai dar "ERRO" (vai parar de rodar seu javascript). var variable = (value_x = !value_x) ? 'isso' : 'aquilo'; Editado Outubro 15, 2012 por Arash Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael L Postado Outubro 15, 2012 Autor Denunciar Share Postado Outubro 15, 2012 Entendi. Muito obrigado. A minha dúvida, quanto ao operador ternário, era na sua forma de declarar o que está sendo avaliado. Demorei um pouco para entender porque não tem if, ou seja, não é qualificado, e segundo (value_x = !value_x) é o mesmo que (value_x != value_x), que é o mesmo que if (value_x != value_x). Eu não sabia que dava para avaliar assim, colocando o operador "not" após o operador "=", junto a variável. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Arash Postado Outubro 16, 2012 Denunciar Share Postado Outubro 16, 2012 Haha, ai que está, na verdade não é certo pensar desse jeito.Quando voce coloca "!value_x ", significa: " O valor de !value_x, não existe ou, nulo, vazio." Nesse caso ele foi declarado, mas não tem valor valido.Quando voce faz " != " voce esta dizendo: "Não é igual a", e isso sempre será falso, pois "value_x" é igual a "value_x", existindo ou não. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael L Postado Outubro 16, 2012 Autor Denunciar Share Postado Outubro 16, 2012 Entendi. Então, mais uma vez me confundi. Se é uma expressão condicional, por que foi usado "=" ao invés de "=="? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Arash Postado Outubro 16, 2012 Denunciar Share Postado Outubro 16, 2012 (editado) Ah ta, ai me desculpe, foi um erro meu, nem tinha visto.Mas quando eu fui testar por algum motivo, não sei o qual, os resultados não voltaram como o esperado quando usei "==" ou "===".Talvez seja um bug, ou algo assim, e não sei se todos os navegadores vão ler o bug da mesma forma.Acho que ele leu algo do tipo:value_x = value_x = (!value_x)?"isso":"aquilo"; Mas mesmo assim, se eu fosse voce, eu usava: value_x = (!value_x)?("isso"):("aquilo");Acho que não vai dar nenhum problema, basta declarar value_x antes, como nos exemplos anteriores. Editado Outubro 16, 2012 por Arash Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael L Postado Outubro 16, 2012 Autor Denunciar Share Postado Outubro 16, 2012 Não precisa se desculpar, meu amigo. Meu problema já foi resolvido. Mas, olhe de onde eu tirei o que eu implementei http://jsbin.com/azewi5/54/edit Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Arash Postado Outubro 16, 2012 Denunciar Share Postado Outubro 16, 2012 Ahhhh taaa, entendi agora XD...Olhá lavar height = (toggled = !toggled) ? maxheight: minheight;Ele vai igualar como voce tinha dito antes, ao !toggled, e se o negocio for TRUE, então faz maxheight, Else minheight Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael L Postado Outubro 17, 2012 Autor Denunciar Share Postado Outubro 17, 2012 Entendi. Então height recebe toggled, que por sua vez recebe o contrário de toggled, e o avalia se true ou false. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rafael L
Pessoal, o que significa a expressão abaixo, mais precisamente o que está sendo avaliado entre os parênteses?
var variable = (value_x = !value_x) ? 'isso' : 'aquilo'
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.