Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

200
Visualizações
Evaluación condicional a una cadena

Estoy tratando de crear una verificación que busque ver si un campo ha cambiado del valor del marcador de posición. Si no es así, reasigno el valor changed original, ya que la función (en mi base de código real) tiene que mirar varios campos.

Estoy un poco confundido por qué:

changed = (locationField.value && locationField.value !== locationField.placeholder) ? true : changed;

está evaluando a una cadena vacía* si el campo se envía sin valor.

* salida al final de la publicación

Supongo que es el valor vacío de locationField.value , pero ¿no debería estar asignando 'verdadero' o el valor de cambiado? Cambiado (por lo que puedo ver) nunca es, y nunca debería ser una cadena.

Probablemente una pregunta simple, pero no puedo ver la respuesta.

Código abierto

 const locationField = document.querySelector('.location'); const submit = document.querySelector('.submit'); let changed = false; submit.addEventListener('click', e => { changed = (locationField.value && locationField.value !== locationField.placeholder) ? true : changed; console.log(locationField.value, locationField.placeholder, (locationField.value && locationField.value !== locationField.placeholder)); console.log(changed); // reset changed = false; });
 <input type="text" placeholder="test" class="location"> <button class="submit">Submit</button>

** EDITAR:

Resultados que obtengo:

entrada "cambiado" => "changed", "test", true

entrada "prueba" => "test", "test", false

entrada "" "", "test", "" , cuando esperaría "", "test", false

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

AND lógico (&&) evalúa los operandos de izquierda a derecha, regresando inmediatamente con el valor del primer operando falso que encuentra; si todos los valores son verdaderos, se devuelve el valor del último operando.

(fuente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND )

Entonces, en su caso, si locationField.value es "", que se evalúa como un valor falso, entonces lógico Y devolverá el valor de locationField.value (por eso devuelve una cadena vacía)

about 4 years ago · Juan Pablo Isaza Relatório

0

Si primero conviertes locationField.value a un valor booleano, ya sea con !! o con Boolean() , entonces debería obtener el resultado esperado.

 (!!locationField.value && locationField.value !== locationField.placeholder)
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda