var active=0;
var online=1;
if([online == 1][active === 0])
{
active=1;
alert('принято')
}
else {
active=0;alert('отказ');
}
Условия соблюдены, но срабатывает else. Почему?
Квадратными скобками обозначается литерал массива
Таким образом внутри if происходит следующее:
создается массив с одним элементом: [online == 1], так как online действительно равен 1 - результат сравнения true, поэтому эту часть можно заменить на [true].
идет попытка получения у указанного выше массива свойства, имя свойства определяется так: active === 0, результат true. При использовании скобочной нотации имя свойства переводится в строку. Таким образом у массива получается свойство с именем true. Так как такого свойства у массива нет, результат - undefined.
undefined - в условиях эквивалентно false, поэтому выполняется ветка `else.
для избегания подобных ошибок не нужно использовать литерал массива, а для объединения проверок необходимо использовать логические операторы
var active = 0;
var online = 1;
if (online == 1 && active === 0) {
active = 1;
console.log('принято')
} else {
active = 0;
console.log('отказ');
}
Очевидно у вас ошибка в if. Перепишите вот так:
var active=0;
var online=1;
if(online === 1 && active === 0)
{
active=1;
alert('принято')
}
else {
active=0;alert('отказ');
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости