2016-01-08 2 views
2

Пытается создать симулятор черного джек с помощью Javascript в качестве упражнения, чтобы увеличить заряд JS (началось кодирование несколько недель назад).Неожиданное поведение пользователя с JS

Чтобы попытаться сделать его простым и автономным (в JS, без html), я попытался использовать подсказку для имитации действий и ответов.

function action(){ 
    var response = prompt("What would you like to do \nInput 1 for Draw Card \nInput 2 for Play hand"); 
    if(response !== 1 || response !== 2){ 
     action(); 
    } 
} 

Итак, мой вопрос, почему это продолжает повторяться, когда я вхожу 1 или 2. Я бы предположить, ничего не должно произойти, если либо 1 или 2 будут введены. Я думал, возможно, это потому, что приглашение сохраняет переменную как строку, поэтому я изменил 1 и 2 на «1» и «2», но это не устранило проблему. Я уверен, что мне не хватает чего-то очень простого. Любая помощь будет большой.

ответ

3

Ваша логика неверна. "1", потому что он отличается от "2", "2" совпадений, потому что он отличается от "1" и других, так как они отличаются от "1" и "2".

Вместо этого, вы должны использовать оператор:

response !== "1" && response !== "2" 
+2

Это имеет смысл. Это исправлено, я отвечу утром. Я иду спать! Спасибо за вашу помощь. –

1

Результат функции prompt всегда String, и strict comparison === из строки и типы Номер будет выхода курса ложному:

"1" === 1 // false 
+0

Как я уже говорил в моем вопросе выше, я попытался с помощью следующего: если (ответ == «1» || ответа == "! 2 ") { –

+0

@JosephErickson'! == '- строгое равенство, а'! = '- свободные операторы равенства. Вы просто отрицаете их, но они все еще строги, поэтому: 'response! ==" 1 "' совпадает с '! (Response ===" 1 ")'. – dfsq

+0

Это не имеет никакого отношения к типу сравнения, проблема в его логике. – Barmar

Смежные вопросы