Есть диапазон целых чисел от 0000 до 9999 ...
в случае с && он здесь и останавливается, т.к. первый операнд по сути false
это про операторы с одинаковым приоритетом
alert(2) – это такой же вызов некой функции, как и любой другой, как myalert(3)var A = alert(1);
var B = alert(2);
var C = alert(3);
// так все три алерта выполнятся
// а результаты их выполнения попадут в переменные
A || B && C;
A === undefined; // true myalert() работает только ассоциативность и приоритет арифметических операторов. А вот логические операторы движок JS «оптимизирует».A && Btrue или false, JS не всегда требуется оценить оба выражения. Сначала он проверяет A. И если оказывается, что A == false, то проверять B уже никому не нужно! Ведь && даёт true в единственном случае, когда оба аргумента true.alert(2) && alert(3) движок JS проверяет, чему равно alert(2) Выполняет его - вы видите диалог. Но возвращает этот вызов пустоту, undefined. Которая всё равно, что false. Раз такое дело, второй операнд, после && уже проверять не требуется. Поэтому alert(3) и не вызывается. makeCounter() отработала один раз, записала в count единицу и вернула другую функцию (а та запомнила своё окружение).counter() выполняется только сама функцияcounter() и ничего более. Строка var count = 1; находилась вне и более ни при делах. counter хранится Функция. return function(){..}count в данном случае. display=mobile