Μπορεί το (a== 1 && a ==2 && a==3) να αποτιμηθεί ποτέ ως αληθές;

Σημείωση του συντονιστή: Παρακαλώ αντισταθείτε στην παρόρμηση να επεξεργαστείτε τον κώδικα ή να αφαιρέσετε αυτή την ειδοποίηση. Το μοτίβο των κενών διαστημάτων μπορεί να αποτελεί μέρος της ερώτησης και επομένως δεν πρέπει να αλλοιώνεται χωρίς λόγο. Εάν ανήκετε στο στρατόπεδο "το κενό διάστημα είναι ασήμαντο", θα πρέπει να μπορείτε να δεχτείτε τον κώδικα ως έχει.

Είναι ποτέ δυνατόν το (a== 1 && a ==2 && a==3) να αποτιμηθεί σε true στην JavaScript;

Αυτή είναι μια ερώτηση συνέντευξης που τέθηκε από μια μεγάλη εταιρεία τεχνολογίας. Συνέβη πριν από δύο εβδομάδες, αλλά εξακολουθώ να προσπαθώ να βρω την απάντηση. Ξέρω ότι ποτέ δεν γράφουμε τέτοιο κώδικα στην καθημερινή μας δουλειά, αλλά είμαι περίεργος.

Λύση

Αν εκμεταλλευτείτε το πώς λειτουργεί το ==, μπορείτε απλά να δημιουργήσετε ένα αντικείμενο με μια προσαρμοσμένη συνάρτηση toStringvalueOf) που αλλάζει αυτό που επιστρέφει κάθε φορά που χρησιμοποιείται έτσι ώστε να ικανοποιεί και τις τρεις συνθήκες.

Σχόλια (19)

Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας τα ακόλουθα στην παγκόσμια εμβέλεια. Για το nodejs χρησιμοποιήστε το global αντί του window στον παρακάτω κώδικα.

Σχόλια (6)