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

Reply via email to