Neek Sandhu wrote on 17. 7. 2018 6:56:
It'd be really useful to have variables inside methods/functions that
are initialized once, reused for subsequent calls and live as long as
containing scope i.e the function itself.
not to be confused with `static` properties
## Use Cases
Almost every app has a function or method that needs to "preserve" some
state across multiple calls, a counter for example. Current ways out of
this situation are either closures created with IIFE's or making those
variables top-level. Both of which are ugly. I think the same could be
done much more neatly with persistent variables.
## Example
```javascript
function foo(n) {
� � // initialized on first call to foo, persists for subsequent calls
� � persist let counter = �0;
� � // this way JS engine won't have to recompile the pattern everytime
� � persist const httpRE = /^https?/;
� � counter++;
� � return n * a;
}
```
is 1:1 as
```javascript
let foo = (() => {
� � let counter = 0;
� � const httpRE = /^https?/;
� � return (n) => {
� � � � counter++;
� � � � return �n * a;
� � }
})()
```
If we get do expressions, we can, afaict, simply do
const foo = do {
let counter = 0;
const httpRE = /^https?/;
n => {
counter++;
return n * a;
}
};
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss