Оператор if
будет оценивать все, что передано ему как логическое значение.
Единственными значениями, для которых он не будет выполнять "истинную" ветвь, являются все ложные значения: 0
, null
, undefined
, ''
, false
, NaN
.
Array.prototype.indexOf
возвращает -1
, когда элемент отсутствует в массиве, который не является одним из значений ложных значений и, следовательно,ваше if
состояние
if (array.indexOf(element))
всегда будет оцениваться как истинное.
var example = [1,2,3];
if (example.indexOf(4)) {
console.log('still true');
}
Вы можете использовать прямое сравнение с -1
:
var example = [1,2,3];
if (example.indexOf(4) !== -1) {
console.log('this is not logged');
}
Или более новый, немного чище, Array.prototype.includes
:
var example = [1,2,3];
if (example.includes(4)) {
console.log('this is not logged');
}