javascript-tutorial / javascript-tutorial/ru.javascript.info

Обновление движка V8, нужны изменения в статье "Замыкание"

Aberta
#1,820 1 comentário 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Linguagem predominante
HTML
Estrelas
4.1k
Forks
922
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

Соавтор нахождения и объяснения причины особенностей движка: @mirageN1349
Пример с особенностью движка в конце статьи теперь не работает (https://learn.javascript.ru/closure)
![image](https://user-images.githubusercontent.com/95305703/222839452-adc1b5d9-55b0-4792-bffd-c288f5f7a1df.png)

Теперь, если в лексическом окружении не используется переменная, то движок её не видит
Примеры:

1. Здесь мы **не используем** переменную 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();
```
![image](https://user-images.githubusercontent.com/95305703/222839673-5f6df77b-8615-4535-9cab-bcfcda42e490.png)

2. Теперь мы **используем** переменную 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();
```
![image](https://user-images.githubusercontent.com/95305703/222839587-4b90abb3-9cea-4488-b0c0-b23ebe1f6826.png)

-------------------------------
По поводу примера из статьи: в safari, даже когда значение не используется, движок корректно сохраняет свойство лексического окружения (переменную)
![image](https://user-images.githubusercontent.com/95305703/222838374-2f648a64-12bb-45cf-8221-d34afe921167.png)

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Abra o artigo sobre closures em https://learn.javascript.ru/closure e execute os dois snippets fornecidos na versão atual do V8 e no Safari, verificando o comportamento do depurador descrito na issue. Atualize o exemplo e a explicação para refletir o comportamento atual do V8 e verifique se a comparação com o Safari continua correta.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
javascript
Domínio
documentation
Tipo de issue
Documentação
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.