Сравнение строк JavaScript не выполняется случайным образом

У меня в моем JS-приложении случайным образом возникает довольно странная ошибка. По сути, скрипт не может точно сравнить две строки. В частности, иногда две идентичные строки не считаются идентичными: ('blah' == 'blah') возвращает false .

Забавно то, что при следующей попытке одни и те же две строки могут быть признаны идентичными (оператор возвращает истину ). Мне так и не удалось выяснить закономерность. Я также пробовал использовать === вместо == ; это не помогло.

Я не мог придумать лучшего способа продемонстрировать и доказать эту нелепую ошибку, кроме записи экрана. Итак, вот оно: http://www.screenr.com/klOs . Я продолжаю давать правильные ответы на каждую викторину в этом видео, но ближе к концу вы поймете, как мои ответы на «Япония» и «Тайвань» будут расценены как «неправильные»; консоль также покажет заданную строку ответа, правильную строку ответа и результат их сравнения ( false ? !!).

Так в чем может быть причина такого странного поведения и как мне его исправить?

Вы можете увидеть код с оператором сравнения в скринкасте. «Params.givenAnswer» происходит непосредственно из текстовой метки кнопки:

//*** Options for answering the card quiz
quizOptions = new Ext.Panel({
        id: 'quizOptions',
        […………]
        listeners: {
            el: {
                scope: this,
                tap: this.checkAnswer
            }
        }
});


checkAnswer: function(container, element) {

    // Get the text value of the button clicked
    var answer = Ext.fly(element).dom.innerText;

    Ext.dispatch({
        controller: 'Practice',
        action: 'checkAnswer',
        givenAnswer: answer
    }); 
},

ОБНОВЛЕНИЕ Спасибо, @JAAulde и @Mike! Я попытался включить кавычки и тип var в журнал и получил следующий результат:

enter image description here

Теперь понятно, почему сравнение строк не удается: похоже, что в первой строке есть лишний своего рода разрыв строки. Это все еще очень странно, поскольку в предыдущем журнале оно не отображалось как новая пустая строка, и, что наиболее важно, оно появляется там случайным образом (обратите внимание, что на этот раз «Тайвань» был принят без каких-либо проблем).

Я включил простое правило удаления разрывов строки для строк ответа, и теперь, похоже, все работает нормально.Всем большое спасибо!

7
задан Arnold 10 October 2011 в 03:47
поделиться