У меня довольно странная ошибка, возникающая в моем приложении JS на случайной основе.По сути, скрипт не может точно сравнить две строки.Точнее говоря, время от времени не видит две одинаковые строки как идентичные: ('blah' == 'blah')
возвращает false
.
Самое смешное, что при другой попытке эти две строки могут быть признаны идентичными (оператор возвращаетtrue
).Мне так и не удалось выяснить закономерность.Я также пытался использовать ===
вместо ==
;это не помогло.
Я не мог придумать лучшего способа продемонстрировать и доказать эту нелепую ошибку, кроме как сделать запись скриншота.Итак, вот оно: 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](https://i.stack.imgur.com/wup57.png)
Теперь понятно, почему сравнение строк не удается: кажется, чтодополнительный разрыв строки в первой строке.Это все еще очень странно, поскольку в предыдущей записи оно не появилось в виде пустой новой строки, и, что наиболее важно, оно появляется там случайным образом (обратите внимание, как на этот раз «Тайвань» был принят без проблем).
Я включил простое правило удаления разрыва строки для строк ответа, и теперь все, кажется, работает нормально.Большое спасибо всем!