• Почему в JS так?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Это нормально, потому что
    Ответ написан
  • Как решить такую задачку с регуляркой?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const reg = /^money_\d+(_\w+)?$/;
    
    // подходят
    console.log([
      'money_1',
      'money_22',
      'money_3_a',
      'money_0_xxx666'
    ].map(n => reg.test(n)));
    
    // не подходят
    console.log([
      'honey_1',
      'money_q2',
      'money_3~a',
      '!money_0_xxx666'
    ].map(n => reg.test(n)));
    Ответ написан
    Комментировать
  • Что такое css-guard?

    @titelhalter
    Не слышал про css guards, но они есть в препроцессере less. По сути это условия, выполнение или невыполнение которых ведет к разным результатам. Простой пример из документации less:
    .mixin(@a) when (@media = mobile) { ... }
    .mixin(@a) when (@media = desktop) { ... }


    Условия внутри when и есть guards. Другой пример - цикл (на самом деле в less нет циклов, но есть рекурсия, выходить из которой и помогает guard).
    .
    loop(@counter) when (@counter > 0) {
      .loop((@counter - 1));    // next iteration
      width: (10px * @counter); // code for each iteration
    }
    Ответ написан
    Комментировать
  • Что такое встроенные "классы" в прототипном ООП JavaScript?

    alvvi
    @alvvi
    export default apathy;
    Конструкторы о которых говорится в учебнике можно получить очень просто:
    console.log(Object);
    Только вот увидите вы следующее:
    // ƒ Object() { [native code] }
    По сути встроенные классы - обычные функции-конструкторы, просто выполняются нативным кодом браузера + у них определны все необходимые методы в prototype. Про это как раз в учебнике и написано. Стоит прочитать там же про прототипное наследование, чтобы сложилась более полная картина.
    Ответ написан
    Комментировать
  • Что такое замыкание?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    В целом ты все верно понял. Почитал я тут ответы, термины, термины, термины...

    Я люблю простые объяснения, буквально на пальцах.

    Вот ты вызвал функцию, в ней создаются переменные локальной области видимости, т.е. доступные только самой функции. Под эти переменные движок JavaScript выделяет память.

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

    В случае с замыканием, ты возвращаешь функцию обратно, т.е. ссылки остаются, поэтому движок не может освободить память, и переменные остаются доступными функции, и более никому. Поэтому эта штука и называется замыкание, т.к. переменные замкнуты на саму функцию.

    Другими словами, чтобы создать замыкание, ты должен вложить функцию в функцию, обратиться из вложенной функции к переменным оборачивающей, и вложенную функцию вернуть наружу. До тех пор, пока возвращенная функция остается в доступе, замыкание существует.

    Один из основных паттернов, для которых применяются замыкания - ограничение доступа к данным, их изоляция (ограничение их области видимости).

    В то же время замыкание выступает в роли автономного атомарного хранилища данных, и, по идее, должно обеспечивать доступ к этим данным, тем или иным способом.

    В ответах есть пример со счетчиком, который наглядно демонстрирует этот принцип.
    Ответ написан
    2 комментария
  • Как получить длину массива vue?

    KornevaViktoria
    @KornevaViktoria
    Frontend Developer
    в computed можно вычислить длину массива и вернуть в нужную переменную в data, задать начальное значение этой переменной в дате arrayLength: null

    либо в created если при инициализации страницы, смотрите как вам нужно
    Ответ написан
    4 комментария
  • Почему ошибка при v-bind:class?

    Planet_93
    @Planet_93
    Попробуйте так

    <span
            v-for=" infoItem  in infoData()"
            :key="infoItem.text"
            v-bind:class="[ infoItem.isVisible ? infoItem.fadeClass: '' , infoItem.defaultClass ]"
          >
            {{ infoItem.title}}
          </span>
    Ответ написан
    Комментировать
  • Почему ошибка при v-bind:class?

    0xD34F
    @0xD34F Куратор тега Vue.js
    :class="[ { infoItem.fadeClass: !infoItem.isVisible }, infoItem.defaultClass ]"

    infoItem.fadeClass - таких имён свойств не бывает (то есть бывает, но так их задать нельзя, нужны кавычки)

    наверное, имелось в виду [infoItem.fadeClass]
    Ответ написан
    1 комментарий
  • Выполнять метод через n-интервал времени, но только после первого события?

    Создаете флаг, присваиваете ему false, при первом клике меняете его на true и запускаете интервал.

    примерно так:

    data(){
          return {
            flag: false,
          }
        },
        methods: {
          somefunc(){
                if(this.flag == false) {
                   //do something
                  //то что выполнится в первый раз
                } else {
                   setInterval(func,5000);
                   // то что будет выполняться следующие разы
                }
                this.flag = true;
                
               
            }
          },

    В первый раз она у вас не выполнится. А дальше что-то будет выполняться через интервал. Но это первое что пришло в голову, полагаю способ решения довольно костыльный.
    Ответ написан
    Комментировать
  • Событие "Колесико вверх/вниз" у vue?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    При вызове события @whell передается объект события WheelEvent, в нем есть свойство deltaY, оно как раз указывает, куда крутится мышь. Если число положительно, но колесико крутится вниз, если отрицательно - вверх.

    Пример
    там можете вместо назначений this.pos, поставить вызов своих методов wheelUp, wheelDown.
    UPD: чтобы окно браузера не скролилось, можно добавить в определению события .prevent
    <div id="app" @wheel.prevent="wheel"></div>

    Ответ написан
    1 комментарий