Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 59 из 114 · 13 мин
Унарные + и −, побитовые & | ^ ~ << >> >>>, составное присваивание, логическое присваивание, void, запятая, группировка и instanceof.
Попалось в коде: flags & 4 и x ??= 1. Это вообще JavaScript?
Ещё какой. Побитовые операторы и логическое присваивание. Разберём каждый.
унарный + −+"42" → 42 (короткое Number()), -x меняет знак.console.log(+"42" + 1, -(-5), +true);& | ^5 & 3 → 1, 5 | 3 → 7, 5 ^ 3 → 6.const READ = 1, WRITE = 2, EXEC = 4;
const order = READ | EXEC;
console.log(order, (order & EXEC) !== 0, (order & WRITE) !== 0);~~x равно -x - 1. ~~3.7 → 3 (старый способ отбросить дробь).console.log(~5, ~~3.7);<< >> >>>1 << 3 → 8 (умножить на 2³), -16 >> 2 → −4 (со знаком), -1 >>> 0 → 4294967295 (без знака).console.log(1 << 3, -16 >> 2, -1 >>> 0);<<= >>= >>>= &= |= ^=flags |= EXEC — то же, что flags = flags | EXEC.let flags = 1;
flags |= 4;
flags &= ~1;
flags <<= 1;
console.log(flags);&&= ||= ??=a ||= b — присвоить, если a falsy; a &&= b — если truthy; a ??= b — если null/undefined.const settings = { qty: 0 };
settings.qty ??= 1;
settings.size ??= "M";
console.log(settings);voidvoid выражение вычисляет выражение и возвращает undefined.href="javascript:void 0" и коротких стрелках.console.log(void 0, void (1 + 1));, (запятая)(a, b) вычисляет оба и возвращает последнее. Чаще всего — в for (let i = 0, j = 10; …; i++, j--).for (let i = 0, j = 3; i < j; i++, j--) console.log(i, j);( )(1 + 2) * 3.console.log(1 + 2 * 3, (1 + 2) * 3);instanceoforder instanceof Order — true, если в цепочке прототипов объекта есть Order.prototype.class Order {}
console.log(new Order() instanceof Order, [] instanceof Array, [] instanceof Object);Логическое присваивание ??= — лучший способ задать значение по умолчанию полю объекта.
Константы READ = 1, WRITE = 2, EXEC = 4. Сделай order с правами на чтение и выполнение через |, напиши has(order, flag) через &, а options.size задай "M" только если его нет — через ??=.
has проверяет флаги — пока нет??= — пока нетВыберите один ответ.
Чему равно 1 | 4?
Выберите один ответ.
Что будет с x после let x = 0; x ??= 5;?
Введите короткий ответ без лишних пробелов.
Чему равно 1 << 4? Введи число.
Проверяем состояние обучения…