Peut (a== 1 && a ==2 && a==3) jamais évaluer à vrai?

Modérateur remarque: Veuillez résister à l'envie de modifier le code ou de supprimer le présent avis. Le modèle de l'espace peut être une partie de la question et, par conséquent, ne devrait pas être altérée inutilement. Si vous êtes dans les "espaces est insignifiant" camp, vous devriez être en mesure d'accepter le code tel qu'il est.

Est-il jamais possible que (a== 1 && a ==2 && a==3) pourrait évaluer à true en JavaScript?

C'est une question d'entrevue demandé par une grande entreprise de technologie. Il s'est passé deux semaines en arrière, mais je suis encore à essayer de trouver la réponse. Je sais que nous n'avons jamais écrire un tel code dans notre journée de travail de jour, mais je suis curieux.

  • Les commentaires ne sont pas pour de longues discussions; cette conversation a été déplacé pour chat.
  • notez que, même si les espaces sont corrigées, il est encore possible de l'original ont été en utilisant les caractères invisibles et semblent avoir l'espacement correct. (aᅠ== 1 && a == 2 &&ᅠa == 3) (vous simplement alterner où le réel espaces)
  • Pour les personnes qui, apparemment, a voté pour cloae trop large: est-ce qu'une fouille à Javascript, en disant qu'il y a trop de réponses valides?
  • Ce serait le travail dans de nombreuses langues en plus du JavaScript, par exemple à l'aide de la surcharge d'opérateur avec des effets secondaires en C# ou Java.
  • si la sécurité est un problème dans un code - et devrait être - poser des questions sur les nuances et les bibelots (même s'ils sont obscurs) n'est pas nécessairement une mauvaise chose. Si la question est plus de l'onanisme intellectuel de la part de l'intervieweur, il se trouve à être un moyen d'ouvrir la discussion avec le candidat... donc @ghord, je ne voudrais pas jeter le bébé avec l'eau du bain, c'est parfaitement acceptable de l'outil; c'est ce que vous faites avec elle lors d'un entretien qui le rend intéressant
  • plutôt raisonnable si l'intervieweur s'attend à ce que la personne interrogée a un aperçu de l'ECMAscript. Si vous savez la différence entre == et === ensuite, vous pouvez répondre à cette question facilement. Bien que les caractères coréens truc, c'est un chouette un.
  • Certaines personnes de s'asseoir autour de philosopher sur ce qui est possible. D'autres concentrent leurs efforts sur si oui ou non ils sont de construction viables, affaires bons produits pour leurs clients. OMI, cette question n'a pas d'utilité pratique au-delà du fait que vous ne devriez jamais demander à ces types de questions dans une interview ou d'écrire ce genre de code. C'est pourquoi il doit être fermé. Je veux dire, vraiment, l'entreprise réalise qu'ils ont payé quelqu'un de l'argent réel pour s'asseoir autour et de parler de ce genre de choses?
  • Quel est le modèle de thread de JavaScript? Dans de nombreuses langues (et en fonction de la définition de a - par exemple avec volatile en C), de la lecture d'une variable simple peut retourner des résultats différents à des moments différents s'il est modifié par quelque chose d'extérieur.
  • javascript s'exécute dans un thread unique contexte. Certaines actions ne fonctionner sur un thread séparé, mais le code s'exécute de façon synchrone et donc que ça ne peut pas arriver en javascript, du moins pas avec une expression comme dans cette question.
  • Cette question ne possède certains avantages en ce qu'elle appelle une compréhension de l'horreur et le danger de la langue que vous allez travailler avec.
  • parce qu'un développeur est autorisé à faire des choses stupides ne signifie pas que la langue qui est mauvais. Lire le JavaScript les bonnes pièces. C'est en quelque sorte un point de la livre.
  • Après avoir lu les réponses, la morale de l'histoire: ne pas utiliser == quand vous voulez dire ===, ont une norme de codage qui interdit à un non-ASCII, les noms de variables, et ont un peluchage processus qui applique les deux précédents de la morale.
  • Je me demande si le journaliste aurait accepté de “je ne sais pas, je ne l'ai jamais utiliser === comme un bon développeur Javascript,” comme une réponse. (Bien que personnellement j'ai quelques arguties avec l'absolutisme, au moins sur de petits projets.)
  • il y a certainement parfaitement cromulent raisons pour lesquelles == et != existe pas-c'est juste une question de le développeur mettant les peluches ignorer (et espérons-le, quelques) les usages.
  • Modérateur remarque: Débordement de Pile a eu une histoire de gens carillon avec des réponses dans les différentes langues en question. Ces tentatives sont faites pour répondre à la question parce qu'ils sont des solutions à un problème général, mais dans une langue différente. Veuillez vous abstenir de signaler comme "pas de réponse". Cela dit, merci de ne pas poster plus de réponses dans différentes langues - il y a une raison à cette question est spécifique à JavaScript, comme indiqué par les commentaires de certains de ces autres réponses, et il ya une raison que nous aimons notre langue-des questions spécifiques à le rester.
  • en vaut la vue: l'appel d'une fonction sans parenthèses
  • La surcharge d'opérateur en Java?