В примере двойной цикл довольно изолированный, его удобно вынести в функцию. Может оказаться более хитрый случай, когда логика внутри циклов завязана на всякие локальные переменные и может их менять, тут уже труднее. Соглашусь, что такое бывает нечасто, но если уж встретилось, то вполне можно заюзать метку. Конечно, и в этом случае вместо метки подойдёт IIFE с return, однако не факт что это читабельнее (тут субъективно).
Надо заметить что === избавляет от большинства таких проблем, но сильно усложняет код в некоторых ситуациях.
Нет, не замечал усложнения. Особенно после перехода на TS удобно. Единственный случай, где нужен ==, это сравнение с null, чтобы ещё и undefined прихватить, но все линтеры об этом кейсе знают и не ругаются.
С Mobx у разработчика развязаны руки в архитектурном плане
С редуксом не меньше, такого могут наворотить… Джуны любым инструментом творят дичь.
Мобикс — всё таки ООП, исследованный вдоль и поперек. Паттерны проектирования, работы всяких классиков. Это проверено временем.
После MobX читать про Redux + Redux Thunk + Reselect (особенно Reselect) можно разве что в виде страшилки на ночь. Да и учитывая, что у мобикса и редукса диаметрально противоположные философии, это может разорвать мозг новичка).
А насчёт РеактНатив — может, всё таки доведут его до ума, чтобы уходить во всякую ересь не надо было...
Хитрость задачи в том, что она про целые числа. С вещественными, уже при n >= 3 можно получить набор, где не все равны: x1 = x2 = А, остальные числа В, так что А>В, и (А + В)/2 = cbrt(AAB)
Можно считать, что стабильная сортировка неявно добавляет в сравнение дополнительный критерий — позицию элемента на момент старта. Конечно, это не относится к случаям, где исходный порядок вообще не определен (например, выборка из БД), но в массиве он есть.
Коварство в том, что обычно нативные реализации сортировки для маленьких массивов (в хроме — менее 10 элементов) используют не q-sort, а какую-то другую, стабильную сортировку. И если об этом не знать, то можно забыть проверить алгоритм на массиве покрупнее. Статья-предостережение, скажем так.
В последнюю строку custom_new вкралась ошибка! Если constructor вернёт примитивное значение (не объект), результатом custom_new должен быть self. Кстати, оный self лучше через Object.create, строкой меньше.
1. Использовать concat — плохая идея, асимптотика из линейной превращается в хрен знает какую. Лучше создавать на на старте массив-результат, прокидывать его в рекурсии:
function flatten(arr, r) {
r = r || [];
arr.forEach(item => Array.isArray(item) ? flatten(item, r) : r.push(item));
return r;
}
2. Промис ну очень приблизительный получился. На самом деле там куча нюансов, на собеседовании тупо не хватит время это запилить.
8. в debounced функцию нельзя передать this и параметры, надо чутка допилить.
Насколько я знаю, мистер Алеф давно перешёл из группы V8 в группу Дарт, и с тех пор многое могло поменяться. Но некоторые его описания остаются актуальными, да.
В примере двойной цикл довольно изолированный, его удобно вынести в функцию. Может оказаться более хитрый случай, когда логика внутри циклов завязана на всякие локальные переменные и может их менять, тут уже труднее. Соглашусь, что такое бывает нечасто, но если уж встретилось, то вполне можно заюзать метку. Конечно, и в этом случае вместо метки подойдёт IIFE с return, однако не факт что это читабельнее (тут субъективно).
Связка break+label помогает, например, без лишних костылей завершить вложенный цикл.
Нет, не замечал усложнения. Особенно после перехода на TS удобно. Единственный случай, где нужен ==, это сравнение с null, чтобы ещё и undefined прихватить, но все линтеры об этом кейсе знают и не ругаются.
С редуксом не меньше, такого могут наворотить… Джуны любым инструментом творят дичь.
Мобикс — всё таки ООП, исследованный вдоль и поперек. Паттерны проектирования, работы всяких классиков. Это проверено временем.
После MobX читать про Redux + Redux Thunk + Reselect (особенно Reselect) можно разве что в виде страшилки на ночь. Да и учитывая, что у мобикса и редукса диаметрально противоположные философии, это может разорвать мозг новичка).
А насчёт РеактНатив — может, всё таки доведут его до ума, чтобы уходить во всякую ересь не надо было...
на прошлой работе писал фронт для букмекерского софта, там слово "parlay" означало экспресс или мультиставку
Хитрость задачи в том, что она про целые числа. С вещественными, уже при n >= 3 можно получить набор, где не все равны: x1 = x2 = А, остальные числа В, так что А>В, и (А + В)/2 = cbrt(AAB)
Можно считать, что стабильная сортировка неявно добавляет в сравнение дополнительный критерий — позицию элемента на момент старта. Конечно, это не относится к случаям, где исходный порядок вообще не определен (например, выборка из БД), но в массиве он есть.
Коварство в том, что обычно нативные реализации сортировки для маленьких массивов (в хроме — менее 10 элементов) используют не q-sort, а какую-то другую, стабильную сортировку. И если об этом не знать, то можно забыть проверить алгоритм на массиве покрупнее. Статья-предостережение, скажем так.
Интересно, почему в V8 запилили TimSort, а не BlockSort? У последнего space complexity O(1), в отличии от.
Ден Абрамов написал Redux ещё до присоединения к команде Реакта, если не ошибаюсь (по крайней мере, он не был сотрудником FB)
MobX потихоньку тоже становится стандартом.
В последнюю строку custom_new вкралась ошибка! Если constructor вернёт примитивное значение (не объект), результатом custom_new должен быть self. Кстати, оный self лучше через Object.create, строкой меньше.
scaleY совсем не то же самое, что height.
1. Использовать concat — плохая идея, асимптотика из линейной превращается в хрен знает какую. Лучше создавать на на старте массив-результат, прокидывать его в рекурсии:
2. Промис ну очень приблизительный получился. На самом деле там куча нюансов, на собеседовании тупо не хватит время это запилить.
8. в debounced функцию нельзя передать this и параметры, надо чутка допилить.
11.
Охренеть, руль стоит как нормальная тачка))
В воркере, если вдруг понадобится запрос, то xhr обязан быть синхронным
Насколько я знаю, мистер Алеф давно перешёл из группы V8 в группу Дарт, и с тех пор многое могло поменяться. Но некоторые его описания остаются актуальными, да.
По поводу исключений вопрос: промисовые режекты — в некотором смысле аналоги исключений. Является ли "искусственный" режект плохой практикой?