Каррирование
Каррирование — это процесс в функциональном программировании, в котором мы можем преобразовать функцию с несколькими аргументами в последовательность вложенных функций. Он возвращает новую функцию, которая ожидает следующий встроенный аргумент.
Примечание. Количество аргументов, которые принимает функция, также называется арностью.
function multiply(x){ return(y) => { return(z) => { return x*y*z } } } console.log(multiply(1)(2)(3))
Композиция
Композиция — это метод, при котором результат одной функции передается следующей функции, которая передается следующей функции и так далее, пока не будет выполнена последняя функция и не будет вычислен результат. . Функциональная композиция может состоять из любого количества функций.
Это также помогает разделить функцию на более мелкие многократно используемые функции, которые несут единую ответственность.
let composition=function(f,g){ return function(x){ return f(g(x)) } }; let add=function(num){ return num+10; } let multiply=function(num){ return num * 10 } let ans = composition(multiply, add) ans(5) // (5+10*10==150)
Closures
Closure — это функция, которая сохраняет доступ к переменным и аргументам внешней функции даже после завершения выполнения внешней функции. Замыкания полезны для сокрытия деталей реализации в JavaScript. Другими словами, может быть полезно создать приватные переменные или функцию.
function count() { let c = 0; function incr() { c = c+1; return c; } return incr; } const generatedId = count() generatedId() //1 generatedId() //2
Объединение
Нулевой оператор объединения ?? является логическим оператором, который возвращает свой правый операнд, когда его левый операнд равен нулю или не определен, и в противном случае возвращает свой левый операнд. Нулевой оператор объединения удобен, когда вы хотите использовать ложные значения по умолчанию или просто хотите использовать ложные значения как действительные.
const value = 0 ?? 100; //0 const value = false ?? true; //false const value = null ?? 100; //100 const value = undefined ?? 100 //100
Reflect
Reflect — это глобальный объект, предоставляющий несколько полезных методов для метапрограммирования. Reflect не является функцией, и ее нельзя построить. Его единственной задачей является предоставление статических методов для отражения.
Методы делятся на два:
1. Методы самоанализа, которые являются неразрушающими методами.
2. Деструктивные методы модификации, поскольку они мутируют объект или его поведение.
const person = { name : 'Bob', [Symbol('email')]: '[email protected]' } Reflect.get(person, 'name') //Bob Reflect.has(person, 'email') //true Reflect.has(person, 'phone') //false Reflect.getPrototypeOf(person) // { Consturctor ...} Reflect.ownKeys(person) //name Symbol(email) Reflect.defineProperty(person, 'phone', {writable: true}); Reflect.has(person, 'phone') //true Reflect.set(person, 'phone', '12345677') Reflect.deleteProperty(person, 'phone') Reflect.has(person, 'phone') //false
Если вам понравился мой блог, подписывайтесь на меня в: Rhea RB
Спасибо за чтение ! Удачного кодирования !!