You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/06-advanced-functions/03-closure/article.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -183,7 +183,7 @@ Rectangles on the right-hand side demonstrate how the global Lexical Environment
183
183
184
184
1. When the script starts, the Lexical Environment is pre-populated with all declared variables.
185
185
- Initially, they are in the "Uninitialized" state. That's a special internal state, it means that the engine knows about the variable, but it cannot be referenced until it has been declared with `let`. It's almost the same as if the variable didn't exist.
186
-
2. Then `let phrase` definition appears. There's no assignment yet, so its value is `undefined`. We can use the variable since this moment.
186
+
2. Then `let phrase` definition appears. There's no assignment yet, so its value is `undefined`. We can use the variable from this point forward.
187
187
3.`phrase` is assigned a value.
188
188
4.`phrase` changes the value.
189
189
@@ -286,7 +286,7 @@ Later, when `counter()` is called, a new Lexical Environment is created for the
286
286
287
287

288
288
289
-
Now when the code inside `counter()` looks for `count` variable, it first searches its own Lexical Environment (empty, as there are no local variables there), then the Lexical Environment of the outer `makeCounter()` call, where finds it and changes.
289
+
Now when the code inside `counter()` looks for `count` variable, it first searches its own Lexical Environment (empty, as there are no local variables there), then the Lexical Environment of the outer `makeCounter()` call, where it finds and changes it.
290
290
291
291
**A variable is updated in the Lexical Environment where it lives.**
In this code, `promises.map` takes input values, turns them into promises (just in case a non-promise was passed) with `p => Promise.resolve(p)`, and then adds `.then` handler to every one.
193
193
194
-
That handler turns a successful result `value` into `{state:'fulfilled', value}`, and an error `reason` into `{state:'rejected', reason}`. That's exactly the format of `Promise.allSettled`.
194
+
That handler turns a successful result `value` into `{status:'fulfilled', value}`, and an error `reason` into `{status:'rejected', reason}`. That's exactly the format of `Promise.allSettled`.
195
195
196
196
Now we can use `Promise.allSettled` to get the results of *all* given promises, even if some of them reject.
197
197
@@ -277,7 +277,7 @@ There are 5 static methods of `Promise` class:
277
277
278
278
1. `Promise.all(promises)` -- waits for all promises to resolve and returns an array of their results. If any of the given promises rejects, it becomes the error of `Promise.all`, and all other results are ignored.
279
279
2. `Promise.allSettled(promises)` (recently added method) -- waits for all promises to settle and returns their results as an array of objects with:
280
-
- `state`: `"fulfilled"` or `"rejected"`
280
+
- `status`: `"fulfilled"` or `"rejected"`
281
281
- `value` (if fulfilled) or `reason` (if rejected).
282
282
3. `Promise.race(promises)` -- waits for the first promise to settle, and its result/error becomes the outcome.
283
283
4. `Promise.resolve(value)` -- makes a resolved promise with the given value.
0 commit comments