Обновление движка V8, нужны изменения в статье "Замыкание"
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Dokumentation
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- javascript
- Bereich
- documentation
Rechercherichtung
Öffne den Closure-Artikel unter https://learn.javascript.ru/closure und führe die beiden bereitgestellten Snippets in der aktuellen Version von V8 und in Safari aus. Überprüfe dabei das im Issue beschriebene Debugger-Verhalten. Aktualisiere das Beispiel und die Erklärung, sodass sie das aktuelle Verhalten von V8 widerspiegeln, und verifiziere, dass der Safari-Vergleich weiterhin korrekt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Соавтор нахождения и объяснения причины особенностей движка: @mirageN1349
Пример с особенностью движка в конце статьи теперь не работает (https://learn.javascript.ru/closure)

Теперь, если в лексическом окружении не используется переменная, то движок её не видит
Примеры:
- Здесь мы не используем переменную value1 в локальном лексическом окружении, связанном с функцией f, и движок её не видит
let value = "Сюрприз!";
function f() {
let value1 = "значение1";
let value = "ближайшее значение";
function g() {
console.log(value)
// alert(value1) в консоли НЕ выведет "значение1"
debugger;
}
return g;
}
let g = f();
g();

- Теперь мы используем переменную value1 в локальном лексическом окружении, связанном с функцией f, и движок её видит
let value = "Сюрприз!";
function f() {
let value1 = "значение1";
let value = "ближайшее значение";
function g1() {
console.log(value1)
}
function g() {
console.log(value)
// alert(value1) в консоли выведет "значение1"
debugger;
}
return g;
}
let g = f();
g();

По поводу примера из статьи: в safari, даже когда значение не используется, движок корректно сохраняет свойство лексического окружения (переменную)

- Vorherrschende Sprache
- HTML
- Sterne
- 4.1k
- Forks
- 922
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus javascript-tutorial/ru.javascript.info
-
suggestion: tutorial
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
javascript-tutorial/ru.javascript.info#2187 · 1 Kommentar ·
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
javascript-tutorial/ru.javascript.info#2163 · 1 Kommentar ·
-
[Баг]: Offenbug
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 65/100
-
[Предложение: учебник]: Offensuggestion: tutorial
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
suggestion: tutorial
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 68/100
Alle Issues in javascript-tutorial/ru.javascript.info
Ähnliche Issues
-
triage
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 88/100
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
feature pydanty:is-working
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
pydantic/pydantic-ai#8647 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
-
:watch: Not Triaged dotnet-fsharp/svc
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100