Ir para conteúdo
Fórum Script Brasil
  • 0

Expressão de atribuição


Rafael L

Pergunta

8 respostass a esta questão

Posts Recomendados

  • 0

É 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 por Arash
Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Arash
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...