2015-02-12 5 views
-1

Когда я запускаю его с любым значением для customerNumber, он всегда возвращает первое предупреждающее сообщение в инструкции if. Что здесь не так?JavaScript: почему boolean всегда возвращает true

var customerNumbers = 13; 
var winningNumbers = []; 
winningNumbers.push(12, 17, 24, 37, 38, 43); 
var match = false; 
for (i=0; i<winningNumbers.length; i++) { 
    if (winningNumbers[i] == customerNumbers) { 
     match = true; 
    } 
} 
if (match = true) { 
    alert("This Week's Winning Numbers are:\n" + winningNumbers.toString() + 
    "\nThe Customer's Number is:\n" + customerNumbers + "\nWe have a match and a winner!"); 
} 
else { 
    alert("This Week's Winning Numbers are:\n" + winningNumbers.toString() + 
    "\nThe Customer's Number is:\n" + customerNumbers + "\nSorry, you are not a winner this week."); 
} 
+4

'if (match = true)' -> 'if (match === true)' Это должно быть просто 'if (match)'. –

+0

Упс! Так просто, спасибо! – cfleming93

+2

Должно просто быть 'if (match) {' - поскольку вы создали логическое значение, просто используйте его напрямую. Никакого сравнения не требуется. – Pointy

ответ

2

Вы не сравниваете булевы match к true ваши назначают true к булевой match. Вам нужно использовать double или triple =.

match = true // Sets match to true 
match == true // Compares match to true 
match === true // Strictly compares match to true 

Так что добавьте еще несколько знаков равенства, и это должно сработать.

1

Не используйте оператор присваивания (=) в инструкции if. Используйте оператор равенства (===).

if (match === true)

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