wiki/content/20200702204351-closure.md

36 lines
773 B
Markdown
Raw Permalink Normal View History

2024-05-06 20:40:05 +00:00
---
2024-10-30 17:34:11 +00:00
date: 2020-07-02
2024-05-06 20:40:05 +00:00
id: 8659a753-2c0d-46cb-afdc-095e318aabff
title: Closure in JavaScript
---
Local bindings are created anew for every call, and different calls
can't affect on another calls local bindings.
``` javascript
function wrapValue(n) {
let local = n;
return () => local;
}
let wrap1 = wrapValue(1);
let wrap2 = wrapValue(2);
console.log(wrap1());
console.log(wrap2());
```
A function that references bindings from local scopes around it is
called a closure. This behavior not only frees you from having to worry
about lifetimes of bindings but also makes it possible to use function
values in some creative ways.
``` javascript
function multiplier(factor) {
return number => number * factor;
}
let twice = multiplier(2);
console.log(twice(5));
```