code_notes
71 subscribers
136 photos
1 video
134 links
учусь делать веб

обратная связь: t.me/dmorenogogoleva
Download Telegram
1. макротаск — запуск скрипта
2. синхронный код (third)
3. микротаск — промис(first)
4. следующий макротаск(second)
вроде всё понятно
но что еще является макротасками и микротасками кроме промисов и setTimeout?
[JavaScript] напишите функцию, которая вернёт n-ное самое большое число

largestN([2, 4, 1, 5, 3], 1) // 5
largestN([2, 4, 1, 5, 3], 2) // 4
largestN([1, 8, 3, 2], 4) // 1


сначала я написала:
const largestN = arr => Math.max(...arr)

а потом вчиталась в задачу — не самое большое число, а n-ное самое большое. то есть второе по большести или пятое по большести

второй вариант (работает как надо):
const largestN = (arr, index) => arr.sort((a, b) => -a - -b)[index - 1]
Я приостановила чтение учебника Кантора (прототипы в нем закончились, а остальное меня не интересует) и начала читать «Функциональное программирование на JavaScript» от Луиса Атенсио
и первое понятие, которое я не могу запомнить это лямбда-выражения (lambda expressions)

в джаваскрипте лямбда-выражением называется анонимная функция

самый распространённый пример это iife

второй по распространённости:
names.sort(function (a, b) {
if (a.name < b.name) {
return -1;
} else if (a.name > b.name) {
return 1;
} else {
return 0;
}
});
и очень часто в джс, когда говорят о лямбдах еще упоминают стрелочные функции
но это разные вещи
немного не по теме, но тоже важно

про cors
если запрос является сложным или/и имеет заголовки, отличные от стандартных, то сначала браузер делает preflight-реквест options для того чтобы найти allow-access-origin заголовки
и если он их нашёл и домен, с которого мы отправляем запрос, указан на сервере как разрешённый, после этого выполняется запрос, который мы посылали изначально

подробности: https://grishaev.me/cors/
скалярные типы переменных это то же самое что и простые типы переменных

то есть это строка, число, булин
Object.freeze замораживает только первый уровень свойств

(мм джаваскрипт)

class Person {
constructor(name, hobby) {
this.name = name
this.hobby = hobby
}

sayHi() {
return `hello, my name is ${this.name}`
}

}

const person = Object.freeze(new Person('dasha', {label: 'poetry'}))

person.name = 'masha'
console.log(person.name) //dasha

person.hobby.label = 'skiing'
console.log(person.hobby.label) //skiing
не могла найти файл конфигурации постгреса, но получилось через
  mdfind pg_hba.conf
Forwarded from Про
#js

function invocation like
func(arg1, arg2)


desugars to
func.call(this, arg1, arg2)
у меня много пет-проджектов и для каждого нужно настроить минимальную сборку

для книжки по функциональному программированию тоже захотелось иметь среду выполнения

конечно же create-react-app для этого случая слишком мощен (да и местный линтер меня раздражает), так что я взяла парсель и накрутила минимальной функциональности. В данном случае это — еслинт, рамбда и лоудаш

и всё бы хорошо, но вс код из коробки не умеет в динамические импорты, а без динамических импортов хочется только упасть и лежать. За них отвечает babel со своими миллионами плагинов, которые с первого раза никогда не работают

так что я написала небольшую заметчк:
https://medium.com/@twanttobealighi/%D0%BA%D0%B0%D0%BA-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C-%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82%D1%8B-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-babel-ceebc0bc7361
функция chain из lodash

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

обязательно нужно вернуть результат через .value()

пример:
_.chain('mememe')
.capitalize()
.value();

//Mememe

пример посложнее:
_.chain([36, 40, 1, 3, 1, 1, 1, 1])
.sort((a, b) => a - b)
.uniq()
.value();

// [1, 3, 36, 40]

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

например onEventListener

button.addEventListener("click", function() {
//do stuff
})
декоратор это функция, которая расширяет функционал переданной ей функции

пример:
hoc — функция, которая принимает компонент и возвращает новый компонент с расширенным функционалом

то есть hoc это частный случай декоратора
https://reactjs.org/docs/higher-order-components.html
вчера обсуждали с коллегами, решила записать