Задать вопрос
  • Нужно ли добавлять в .gitignore package-lock.json?

    mad_maximus
    @mad_maximus
    Если библиотека, то нужно, чтобы пользователи вашей библиотеки всегда скачивали актуальные зависимости из package.json. Если проект, то не нужно, тогда те, кто пишут проект вместе с вами, будут использовать библиотеки, версии которых указаны в package-lock.json. Следственно, у них не будет конфликтов.
    Ответ написан
    5 комментариев
  • Странные данные с погодного api, как получить нужные значения?

    hzzzzl
    @hzzzzl
    прицепи к линку &units=metric

    api.openweathermap.org/data/2.5/weather?q=London,u...

    "sunrise":1563422638,"sunset":1563480543
    для new Date умножить на 1000,
    закат
    new Date(1563480543000)
    Thu Jul 18 2019 23:09:03 GMT+0300 (Eastern European Summer Time)

    почему так:
    https://stackoverflow.com/questions/847185/convert...
    Ответ написан
    3 комментария
  • Одинарные и двойные кавычки, какие лучше?

    Wolfnsex
    @Wolfnsex Куратор тега HTML
    Если не хочешь быть первым - не вставай в очередь!
    Одинарные и двойные кавычки, какие лучше?
    В ряде языков программирования - двойными кавычками обрамляется строка с переменными или управляющими символами (перевод строки, возврат каретки, и т.д.), одинарными - константные строки (при этом управляющие символы в них тоже не интерпретируются). *просто имейте в виду, что в ряде случаев (в некоторых языках) кавычки могут иметь не только разное начертание, но и по разному интерпретироваться.

    В HTML - как "де факто стандарт" изначально было принято писать все теги большими буквами и использовать двойные кавычки, потом со временем все (где-то в районе момента появления HTML4-4.01) как-то "переехали" на нижний регистр тегов, но двойные кавычки - так и остались.

    В CSS - обычно применяют одинарные. Но, в CSS кавычки не так уж и часто можно встретить и в целом это язык довольно линейный, по этому там этот вопрос на мой взгляд не особо принципиален. *Не редко встречал например такой вариант, когда названия шрифтов обрамлены двойными кавычками, а URL'ы - одинарными (хотя по стандарту - обрамление URL'ов кавычками не является обязательным) - лично у меня даже такие варианты никакого дискомфорта не вызывают.

    В JS - скорее дело привычки... Никакой разницы на уровне кода в них нет (по крайней мере я не могу вспомнить разницы в их интерпретации). Но, судя по всему, в последнее время большинство всё же склоняется в сторону одинарных кавычек.
    Ответ написан
    Комментировать
  • Всегда ли асинхронная функция возвращает промис?

    Robur
    @Robur
    Знаю больше чем это необходимо
    если описана как async то да.
    Если обычная функция то она работает как обычная функция и асинхронной вы её делаете руками тем или иным способом
    Ответ написан
    Комментировать
  • В чем отличие в выполнении асинхронных операций?

    Xuxicheta
    @Xuxicheta
    инженер
    1.
    Запускается fetchAPI1,
    ожидание завершения fetchAPI1,
    запускается fetchAPI2,
    ожидание завершения fetchAPI2

    2.
    Запускается fetchAPI1,
    запускается fetchAPI2,
    ожидание завершения fetchAPI1,
    ожидание завершения fetchAPI2.
    (Если fetchAPI2 завершился раньше, то промис request2 находится в состоянии fulfilled и await пройдет сразу же, в конце текущего евентлуп цикла )

    3.
    Запускается fetchAPI1,
    запускается fetchAPI2,
    ожидание завершения fetchAPI1 и fetchAPI1, возврат массива результатов fetchAPI1 и fetchAPI1.

    Разница между 2 и 3 совсем небольшая.
    Только все это можно переписать корректно так
    const fetchData = id => {
      return Promise.all([fetchAPI1(id), fetchAPI2(id)])
        .then(([response1, response2]) => ({response1, response2}));
    }
    Ответ написан
    1 комментарий
  • Как сделать редирект с https на http nginx?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Так и будет, пока не добавите конфиг с валидным сертификатом. С другой стороны - когда вы его добавите, отпадёт необходимость в этом дурацком редиректе, мвахахаха.
    Ответ написан
    Комментировать
  • В JS коде ошибка, Что не так?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    разбираем ваш код по шагам

    isMomHappy у вас false;
    var isMomHappy = false;

    соответственно эта часть условия у вас не выполняется
    if (isMomHappy) {...}

    а выполняется вот эта часть
    else {
      reject( new Error('mom is not happy') );
    }

    в которой вы самолично генерируете ошибку
    reject( new Error('mom is not happy') );

    так происходит потому, что вы не установили промису обработчик ошибки:
    willIGetNewPhone.catch(err=>{
       console.log(err.message);
    });


    ЗЫ

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

    ЗЫЗЫ

    Ну или попробуйте выполнить этот код:
    'use strict';
    var promise = new Promise((resolve,reject)=>{
       reject(new Error("провал"));
    });

    и этот код:
    'use strict';
    
    var promise = new Promise((resolve,reject)=>{
       reject(new Error("провал"));
    });
    
    promise.catch(err=>{
       console.log(err.message);
    });

    и сравните результат.

    ЗЫЗЫЗЫ

    если все еще до сих пор не понятно, то просто дочитайте ваш учебный материал до конца
    Ответ написан
    Комментировать
  • Почему ошибка "Unexpected token ="?

    mannaro
    @mannaro Куратор тега JavaScript
    Умею профессионально гуглить
    Это вообще сомнительное решение. Никогда, запомните, никогда(!) нельзя использовать eval, если вы не контролируете то, что туда придёт. Это открывает огромную дыру в безопасности. Да и сам способ выглядит как дикий костыль.

    Советую хранить все переменные не просто так, а как ключи какого-то объекта. Тогда обновление их не потребует вызова eval.
    Ответ написан
    2 комментария
  • Функция round() не работает, что делать?

    @deliro
    1. Сходи в среднюю школу, где тебе расскажут, что такое комплексные числа
    2. Прочитай книжку (любую) по программированию, где тебе расскажут, как работают float (а в данном случае два float — complex) в компухтерах
    3.
    In [2]: D = (11.180339887498949+0j)                                                                                                                                  
    
    In [3]: complex(round(D.real), round(D.imag))                                                                                                                        
    Out[3]: (11+0j)
    Ответ написан
    Комментировать
  • Как объяснить конструкцию return this?

    Xuxicheta
    @Xuxicheta
    инженер
    constructor работает как конструктор только в составе es6 класса.
    А у вас тут это просто обычная функция, если вы ничего из нее не возвращаете, то она ничего и не вернет.
    Т.е. вы создаете объект, присваиваете ему прототип Person и обращаетесь к свойству constructor этого объекта.
    В объекте такого свойства нет, ищется в цепочке прототипов, находится и вызывается функция на которую указывает One.__proto__.constructor

    А правильно будет так

    class Person {
      constructor(name,age) {
        this.name=name;
        this.age=age;
      }
    };
    
    var One = new Person("Alex", 32);


    другой вариант
    var Person = {
        constructor: function(name,age){
        this.name=name;
        this.age=age;
      }
    };
    
    var One = Object.create(new Person.constructor("Alex", 32));
    console.log(One.name);

    но в этом случае One будет иметь прототипом не Person, а новый объект, созданный через Person.constructor
    Ответ написан
    6 комментариев
  • Что вызывает эту ошибку и как её решить?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    SVG не HTML, это XML, поэтому все теги должны закрываться.
    <path d="*секрет*" />
    Ответ написан
    4 комментария
  • Почему for(;;); вешает процесс?

    rockon404
    @rockon404
    Frontend Developer
    Условие.
    Выражение, выполняющееся на каждой интерации цикла. Если выражение истинно, цикл выполняется. Условие не является обязательным. Если его нет, условие всегда считается истиной. Если выражение ложно, выполнение переходит к первому выражению, следующему за for.

    MDN: for
    Ответ написан
    Комментировать
  • Почему this ведет себя по разному при сравнении с числом?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Когда вы пытаетесь обратится к свойству/методу примитивного типа, он оборачивается в объект (Number, String и.т.д.), выполняется ваш метод или возвращается свойство, после чего объект удаляется. Поэтому в this у методов всегда будет ссылка на "объект обертка". Этот как
    let num = new Number(123);
    num === 123; // false
    num == 123; // true
    typeof num; // object

    UPD: в строгом режиме, this внутри метода будет примитивным типом number. Почему это так, пока не знаю, не могу найти в спецификации такого. Вероятно это потому, что в строгом режиме this не преобразуется автоматически (например в не строгом режиме, с null/undefined в глобальный объект). Пример
    // не строгий режим
    function func() {
    	console.warn(this);
    }
    
    func.call(100); // выведет [Number: 100] объект, т.е. есть преобразование

    строгий
    "use strict"
    
    function func() {
    	console.warn(this);
    }
    
    func.call(100); // выведет 100, примитивный number. т.е. преобразования нет


    Поэтому код и работает в вашей песочнице, т.к. там строгий режим включен по умолчанию.
    Ответ написан
    3 комментария
  • Почему удаляется элемент одного массива при удалении элемента в другом?

    Это базовые знания, объекты присваиваются по ссылке, простые типы по значению
    https://learn.javascript.ru/object-reference
    Ответ написан
    Комментировать
  • Можно ли при создании объекта использовать его же свойства?

    @FabiBoom
    Можно же просто запустить в консоли и проверить, что такое делать нельзя, и, если упрощенно объяснять, то:
    1) сперва у нас создается именно обьект (то что между { ... });
    2) если в свойстве указанно какое-то выражение (типо a+b, или obj.property) , то оно вычисляется и результат этого выражения становиться значениям этого свойства;
    3) допустим у нас есть что-то типо такого -
    let o = {
      x : 2,
      y : o.x,
    }

    Свойство x получает значение 2 и доходим до свойства y - видим там получения свойства x объекта o, но у нас еще нет переменной с именем o, что значит мы не просто не можем получить свойство объекта, а мы не нашли сам объект и в итоге получаем ReferenceError.
    4) Если у нас не было никаких ошибок и объект успешно создан и размещен в памяти, только тогда создается в нужной области видимости переменная, которой присваивается ссылка на наш объект и только тогда мы можем ссылаться на него за заданным именем.
    Ответ написан
    Комментировать
  • Почему можно написать в параметре функции id без точки?

    Decadal
    @Decadal
    Вам в функцию deleteTask передают id таски при удалении, а не объект таски. TaskId это просто имя параметра функции.
    Вероятно когда вы говорите что в task есть айди, смотрите в другой скоуп - на самом деле на момент работы функции передаётся все равно число (в месте вызова функции), и от того что вы переназвали параметр на task, туда не стал приходить обьект, а по прежнему приходит число
    Ответ написан
    Комментировать
  • Как упростить сравнение 4 чисел с помощью if?

    yellow79
    @yellow79
    Senior Software Engineer
    Складываешь чиселки в мапу, сет или что там есть в Си, далее если длина не равна числу входных чиселок, значит есть совпадения.
    Ответ написан
    1 комментарий
  • Как упростить сравнение 4 чисел с помощью if?

    delphinpro
    @delphinpro
    frontend developer
    $Maccив = ПолучитьМассивЧисел()
    ОтсортироватьМассив($Массив)
    $Врем = 0
    Цикл $Число Из $Массив
      Если $Число == $Врем То 
        Принт("Есть совпадение")
        ОстановитьЦикл
        ВыйтиИзПодпрограммы
      Иначе
        $Врем = $Число
    Ответ написан
    5 комментариев
  • Чем отличается обявление int* a от int *a в Си?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Ни чем не отличается. Пробельные символы допустимо ставить в любом месте, где они не разрывают ключевое слово, идентификатор или константу. Все варианты ниже полностью эквивалентны:
    int*a;
    int* a;
    int *a;
    int * a;

    Но есть некоторая тонкость. Если посмотреть на синтаксис объявления нескольких переменных:
    int * a, * b, c, * d, e; // a, b и d - указатели, c и e - числа

    то будет видно, что "звездочка" является скорее модификатором переменной, чем модификатором типа. Чтобы подчеркнуть этот факт, рекомендуется всегда писать "звездочку" около переменной. Такая привычка позволяет избежать глупых ошибок:
    int *a, *b; // нормально
    int* a, b;  // Ошибка: b кажется указателем, но на самом деле - число.

    А синтаксис у C простой.
    5c77e725c3f4a317612433.jpeg
    Ответ написан
    1 комментарий