자바스크립트 함수 리터럴 (Function Literals)

In JavaScript, functions are first-class citizens, which means they can be declared, assigned to variables, and passed as arguments to other functions. One of the ways to create a function in JavaScript is by using function literals.

What are Function Literals?

A function literal is a way to define a function directly within an expression, without the need for a separate function declaration statement. It allows you to define a function on the fly, wherever it is needed.

Syntax

const functionName = function(arguments) {
   // code block
}

The functionName is optional and can be omitted if the function doesn’t need to be referenced elsewhere in the code.

Examples

1. Basic Function Literal

Here’s an example of a basic function literal in JavaScript:

const greet = function() {
   console.log("Hello, world!");
};

greet();

In this example, we define a function literal named greet that prints “Hello, world!” to the console. After defining the function, we invoke it using the greet() syntax.

2. Function Literal with Parameters

Function literals can also take parameters:

const multiply = function(a, b) {
   return a * b;
};

console.log(multiply(5, 2)); // Output: 10

In this example, the multiply function takes two parameters a and b, and returns their product. We then invoke the multiply function with two arguments: 5 and 2, and log the result to the console.

3. Function Literal as Callback

Function literals are often used as callbacks in JavaScript. Here’s an example:

const numbers = [1, 2, 3, 4, 5];

const square = function(num) {
   return num * num;
};

const squaredNumbers = numbers.map(square);
console.log(squaredNumbers); // Output: [1, 4, 9, 16, 25]

In this example, we define a function literal named square that takes a number as input and returns its square. We then use it as a callback function in the map method to square each number in the numbers array.

Advantages of Function Literals

Function literals are a powerful and versatile feature of JavaScript that allow for more expressive and concise code. They are commonly used in event handling, asynchronous programming, and functional programming paradigms.