2022-02-19

Function in JavaScript

Functions in JavaScript

Functions are one of the fundamental building blocks in JavaScript, a high-level, interpreted scripting language. They are essentially reusable blocks of code that perform specific tasks. In JavaScript, functions are objects, meaning they have properties and can be manipulated like any other object.

Function Declarations

A function declaration in JavaScript involves defining a function with the function keyword, followed by a unique function name, a pair of parentheses () that may include parameter names, and a pair of curly braces {} that enclose the function's code block. Here is a general syntax of a function declaration:

js
function functionName(parameters) {
    // Code to be executed
}

For instance, a simple function declaration to add two numbers might look like this:

js
function addNumbers(a, b) {
    return a + b;
}

Parameters and Arguments

In a function declaration, the function name is followed by parentheses that can contain zero or more parameters. Parameters are placeholders that represent the inputs the function expects when it is called. When you call a function, you provide values for these parameters. These values are known as arguments.

In the above addNumbers function, a and b are parameters. If we were to call this function with two numbers like addNumbers(2, 3), 2 and 3 would be the arguments.

Return Statement

The return statement is used to specify the value that a function should output. Once a return statement is executed, the function stops running and the specified value is returned to the location where the function was called. If a function doesn't have a return statement, it will return undefined.

In our addNumbers function, the statement return a + b; adds the parameters a and b together and returns the result.

Function Hoisting

In JavaScript, function declarations are hoisted. This means the JavaScript interpreter moves all function declarations to the top of their containing scope before any code is executed. Therefore, a function declared in this way can be used before it is defined in the code.

For instance, the following code would work without errors, even though the function call appears before the function declaration:

js
console.log(addNumbers(5, 3)); // Outputs: 8

function addNumbers(a, b) {
    return a + b;
}

Function Expressions

A function expression is a way to define a function in JavaScript by assigning it to a variable. The function itself can be referred to by the variable's name. Here is the general syntax of a function expression:

js
let variableName = function(parameters) {
    // Code to be executed
}

For instance, the addNumbers function can be defined as a function expression like so:

js
let addNumbers = function(a, b) {
    return a + b;
};

Anonymous Functions

The function in a function expression is typically anonymous, meaning it does not have its own name. However, you can also use named function expressions. The name can be useful for debugging (as it shows up in stack traces), but it does not make the function callable by that name from outside the function itself.

js
let addNumbers = function add(a, b) {
    return a + b;
};

In the above code, add is not accessible in the global scope. It can only be used inside the function body.

IIFE: Immediately Invoked Function Expressions

An Immediately Invoked Function Expression (IIFE) is a function that is declared and run at the same time. The syntax involves wrapping a function expression in parentheses to create a function expression statement, and then using a second pair of parentheses to immediately call the function. This is useful when you want to create a new scope, as variables declared with var inside the IIFE cannot be accessed from outside it.

js
(function() {
    let message = "Hello, world!";
    console.log(message);  // Outputs: "Hello, world!"
})();

console.log(message);  // Outputs: ReferenceError: message is not defined

Arrow Functions

Arrow functions provide a concise way to write function expressions in JavaScript. They were introduced with ES6 (ECMAScript 2015) and have become popular due to their brevity and their handling of the this keyword. The syntax for an arrow function looks like this:

js
let variableName = (parameters) => {
    // Code to be executed
}

A simple arrow function that adds two numbers could look like this:

js
let addNumbers = (a, b) => {
    return a + b;
};

If the function body consists of a single expression, you can omit the curly braces and the return keyword, making the function even shorter:

js
let addNumbers = (a, b) => a + b;

Arrow Functions and 'this' Context

One important feature of arrow functions is that they do not have their own this value. Instead, they inherit this from the surrounding code context. This makes them ideal for use in callbacks and methods where you want this to have the same value as it does in the surrounding code.

For instance, in an event handler, an arrow function allows this to refer to the object that triggered the event, rather than the function itself:

js
let button = document.getElementById('myButton');
button.addEventListener('click', () => {
    // `this` refers to `button`, not the function
    this.classList.toggle('active');
});

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!