Извините, если вопрос глупый, но почему в данном случае в переменной x лежит null:
var x = 2 && 1 && null && 0 && undefined;
console.log(x);
в этом единица:
var x = 2 && 1;
console.log(x);
а в этом 2:
var x = 1 && 2;
console.log(x);
А тут 3:
console.log(null || 2 && 3 || 4);
Я не силен в js, но скорее всего тут все так же как и в других языках. Логические операторы выполняются по такому принципу, что если результат известен по одному операнду, то второй не вычисляется.
Логическое И &&
вернет первый операнд, если он при приведении к логическому типу дает false
, причем дальше вычисление не производится, то есть a() && b()
не будет вычислять b()
, если a
вернуло то, что привелось к false
. Иначе вернет второй операнд.
Логическое ИЛИ ||
- наоборот, возвращает первый операнд, если он истинный.
var x = 2 && 1 && null && 0 && undefined;
2
приведется к true
var x = 1 && null && 0 && undefined;
1
тоже
var x = null && 0 && undefined;
а вот null
приведется к false
, поэтому дальше ничего не вычисляем.
Пример с ||
вернет 1, потому что это первый попавшийся "истинный" операнд.
var x = null || 0 || undefined || 1 || true || false;
console.log(x);
Приоритет оператора &&
выше, чем у ||
. Значит, выражение
null || 2 && 3 || 4
будет посчитано как
null || (2 && 3) || 4
null
приводится к false
, поэтому получаем
(2 && 3) || 4
в скобках будет 3
3 || 4
и получаем 3
.
Выражение в скобках не вычислялось бы, если бы первый аргумент был бы истинным:
console.log(true || 2 && 3 || 4);
let x = 1 && 2
Смысл в том, что если первое значение верно, то присвоит второе, если же одним из условий будет null
, то и вернёт null
в переменную. Концепция думаю понятна.
Если
let x = 3 || 4
Парсер выбирает то, что первым будет true, то есть
3 === true
Вот он его и выбрал, если будет let x = 0 || 4
, то x будет равен 4.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Кто-нибудь знает, как использовать тег animate в feFuncRGB в feComponentTransfer? У меня есть фильтр SVG, и мне нужно показать / скрыть его по щелчку с transition