DEV Community

Rowida
Rowida

Posted on

1 1

Functional Programming with JavaScript chapter 3 Notes

JavaScript supports functional programming because JavaScript functions are first-class citizens.

What is first-class citizens?

First-class citizens or as called first-class object means that functions can do the same things that variables can do.

It can be stored whether in a variable, array or object.
And that functions can be passed as an argument to the functions and be returned by the function.

Image description

for a better tracking of the following examples' output,I am using a h4 with id equals ch3.

<div class="body" style=" height: 1000px; ">
    <h1 style="color: brown; align-items: center; text-align: center;" class="mt-5">Learning react</h1>
    <h4 class="display-6 text-center mt-4" id="ch3"></h4>
</div>

<script src="./ch3.js"></script>
Enter fullscreen mode Exit fullscreen mode
let content = document.getElementById("ch3");
Enter fullscreen mode Exit fullscreen mode

1- Store function in a variable.

We can declare functions with the var or let keyword the same way you can declare strings, numbers, or any other variables:

var log = function (msg) {
  console.log(msg);
  content.innerText += `\n  ${msg}`;
};

log("In JavaScript functions are variables");
// In JavaScript, functions are variables
Enter fullscreen mode Exit fullscreen mode

With ES6, we can write the same function using an arrow function

// using an arrow function

var log = (msg) => {
  console.log(msg);
  content.innerText += `\n  ${msg}`;
};

log("In JavaScript functions are variables using an arrow function");
Enter fullscreen mode Exit fullscreen mode

2- Store functions in objects

Since functions are variables, we can add them to objects:

// Since functions are variables, we can add them to objects:
const obj = {
  msg: "adding functions to objects",
  message: "They can be added to objects like variables",
  log(msg) {
    console.log(msg);
    content.innerText += `\n  ${msg}`;
  },
};
obj.log(obj.msg);
obj.log(obj.message);
Enter fullscreen mode Exit fullscreen mode

In the previous example we store a function in a variable called log.

3- Store functions in arrays.

We can also add functions to arrays in JavaScript

// Since functions are variables, we can add them to arrays:

const arr = [
  "adding functions to arrays",
  (log) => console.log(log),
  "like variables",
  (msg) => {console.log(msg);
    content.innerText += `\n  ${msg}`;
},
  (test) => {
    console.log(test);
    content.innerText += `\n  ${test}`;
  },
  "They can be inserted into arrays",
];

arr[4](arr[5]);
arr[1](arr[0])
arr[3](arr[2])
// They can be inserted into arrays
// like variables
Enter fullscreen mode Exit fullscreen mode

4- Pass functions as arguments.

Functions can be sent to other functions as arguments.

const insideFn = logger => logger("They can be sent to other functions as arguments");
insideFn(log);
Enter fullscreen mode Exit fullscreen mode

5- Return Functions by the function.

Functions can be also returned from other functions, just like variables:

const createScream = function(logger) { 
    // getting logger functions as a parameter
    console.log('new func return');
    return function(msg){ 
        // getting a normal msg text as an argument
        logger(`${msg} from return function  !!!`);
    }
}
Enter fullscreen mode Exit fullscreen mode

Using ES6 syntax, we could describe the same createScream

const createScreamarrow = logger => message =>
logger(message.toUpperCase() + "!!!")
Enter fullscreen mode Exit fullscreen mode

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay