An Interest In:
Web News this Week
- April 1, 2024
- March 31, 2024
- March 30, 2024
- March 29, 2024
- March 28, 2024
- March 27, 2024
- March 26, 2024
JS interview in 2 minutes / Higher Order Functions
Question:
Explain Higher Order Functions in javascript.
Quick answer:
These are functions that return other functions.
Longer answer:
In JavaScript, you can return objects of any type as a result of the function. This means you can create a function that will return a function.
function higherFunction() { return function regularFunction() { console.log('Hello world!') }}const a = higherFunction() // won't print anythinga() // Hello world!
You can also try to create even more nested functions.
const a = () => () => () => () => console.log('Hello world')const b = a()const c = b()const d = c()d() // Hello world!
You can pass functions to a function that will execute functions in some specific order.
const pipe = (...args) => (init) => args.reduce((acc, cur) => cur(acc), init)const a = pipe( (val) => val + 1, (val) => val * 2, (val) => console.log("Got", val),)a(10) // Got 22
And more other fun ways to use functions
Real-life example:
Some frameworks (angular) and libraries (MobX) heavily rely on decorators, but decorators are no more than Higher Order Functions themselves.
const logDecorator = (wrapped) => { return (...args) => { console.log(`Invoked ${wrapped.name} with args ${args}`) wrapped(...args) }}const tmp = (param) => { console.log('Do nothing, but just show param:', param) }const wrappedTmp = logDecorator(tmp)wrappedTmp('Hello world!')// Invoked tmp with args Hello world!// Do nothing, but just show param: Hello world!
Some other libraries (RxJs) may use it as configurable helpers.
// These functions can by provided by a library itselfconst uppercase = (a) => a.toUpperCase();const removePunctuation = (a) => a.replace(/[^0-9a-zA-Z ]/g, '')// pipe is a Higher Order Function that returns a function, which will apply all functions one by oneconst process = pipe( uppercase, removePunctuation,)console.log(process('qwe-qwe'), process('Hello world!'))// QWEQWE HELLO WORLD
Older posts:
Btw, I will post more fun stuff here and on Twitter. Let's be friends
Original Link: https://dev.to/kozlovzxc/js-interview-in-2-minutes-higher-order-functions-38kb
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To