• Как итерировать массив и вывести только уникальные значения?

    @LJ322
    Создайте коллекцию Set для хранения уникальных значений и записывайте туда элементы после добавления в DOM
    const btn = document.querySelector("button");
     const div = document.createElement("div");
     div.classList.add("y");
     document.querySelector(".x").appendChild(div);
     let count = 0;
     let set = new Set();
     btn.addEventListener("click", () => {
       count += 1;
       !set.has(count) ? div.insertAdjacentHTML(
         "beforeend",
         `<button class="btn" value="${count}">${count}</button>`
       ) : set.add(count);
     });

    P.S. Немного с опозданием, но думаю вам пригодится на будущее: Set позволяет хранить только уникальные значения
    Ответ написан
    1 комментарий
  • Порядок выполнения действий в выражении --i + i++?

    @Mercury13
    Программист на «си с крестами» и не только
    В математике на бумаге можно вычислять в любом порядке, потому и говорят на уроках: «что в скобках, то и первым».

    В компьютерах есть побочные эффекты и желание сделать поменьше промежуточной памяти, потому приоритет и ассоциативность служат только для расстановки неявных скобок — а порядок вычисления прост: «сначала левая часть, потом правая» (для некоторых операций наоборот).

    В Си даже это «левая → правая» зачастую остаётся за реализацией: в каком порядке компилятор хочет вычислять, в таком будет вычислять. Да ещё и «i++» — не атомарное выражение, а «i:=i+1», то есть прибавить 1, а потом присвоить — и эти операции «прибавить» и «присвоить» компилятор может разнести далеко друг от друга, если так пожелает.
    Ответ написан
    9 комментариев
  • Порядок выполнения действий в выражении --i + i++?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    --i + i++ - это не атомарное выражение. Это (--i) + (i++) - как раз потому что приоритеты инкремента выше приоритетов сложения. Javascript не вычисляет ничего разом, он вычисляет всё пошагово слева направо. Приоритетность разбивается на токены не снизу вверх, а сверху-вниз. Если два подвыражения с более высоким приоритетом оказались после разбивки слева и справа, то левый выполняется первым, правый вторым, т.к. для выражения с низким приоритетом не важно насколько приоритет подвыражений выше - для него они равноправны.
    Никакого UB в отличие от С тут быть не может.
    Ответ написан
    4 комментария
  • Могут ли одни и те же блоки БЭМ использоваться на одной или разных страницах без некоторых своих элементов?

    @BigSmoke
    > а могут ли
    Могут.

    > в данном примере ошибок нет?
    Нет.
    Ответ написан
    Комментировать
  • Могут ли одни и те же блоки БЭМ использоваться на одной или разных страницах без некоторых своих элементов?

    Get-Web
    @Get-Web
    Front-End Developer
    использоваться без некоторых своих элементов,

    Конечно, блок может быть вообще без элементов

    ИЛИ с изменённой последовательностью этих самых элементов

    Конечно можно, а если невозможно изменить что-либо не нарушив стандартное поведение, применяется модификатор или микс.

    например вложенный блок в одном месте является так же и элементом (микс)

    Да, любой блок может быть миксом другого блока или элемента.

    В данном примере я использовал названия блоков "header-top" и "header-bottom", является ли это ошибкой?

    Тут конечно нужно изучать в контексте, но header-1 и header-2 будет значительно практичнее. Если поменять местами header-top и header-bottom, что по сути должно быть возможным хотя бы в теории, то из-за таких названий будет полный диссонанс, в то время как абстрактные имена header-1 и header-2 ни к чему нас не обязывают и ни чем не ограничивают.

    Еще можно использовать префикс например t-header b-header, интуитивно мы можем себе представить что это top и bottom, но по факту это всего лишь абстрактное название header
    Ответ написан
    6 комментариев