Promoção no ar
Tempo restante da oferta:
15 Horas
14 Min
55 Seg
Assinar →

Contexto de execução JavaScript

Contexto de execução JavaScript é um conceito abstrato que contém informações sobre o ambiente no qual o código atual está sendo executado

Ariel Sardinha 4 anos atrás

O contexto de execução JavaScript é um ambiente onde o código JavaScript é processado e executado. Ele fornece um espaço para armazenar variáveis, objetos, funções e outras informações pertinentes ao código em execução.

Antes de começarmos a explicar é importante entender o conceito de contexto e escopo, que você pode ver neste artigo: Contexto e Escopo no JavaScript.

Curso JavaScript - Programação Assíncrona Conhecer o curso

Contexto de execução

Cada vez que um trecho de código é executado, ele cria contexto de execução. Podemos utilizar o seguinte código para entender como funciona.

const number = 10;

function multiplicador(number){
	const result = number * 2;
	return result;
}

const name = "Ariel";

A primeira coisa que a engine que estiver interpretando o código, como o Node.js, é começar a gravar partes do seu código em memória.

alocamento de memoria

No gif acima, primeiro ele vai guardar em memória o number e alocar o valor 3.

Depois ela vai guardar o multiplicador e salvar toda a função. Nesse caso, como as funções são valores, ele vai alocar toda a função como valor do multiplicador para ser usado mais para frente, não executando a função.

Por fim, teremos o name com o valor "Ariel" salvo.

Esse processo faz parte da criação do contexto de execução global.

Toda vez que executamos uma função, a engine cria um contexto de execução local.

Para entendermos como é criado, vou utilizar o seguinte código como exemplo:

const number = 10;

function multiplicador(numberParam){
	const result = numberParam * 2;
	return result;
}

const result = multiplicador(number);

Veja como vai ficar o processo de alocamento de memória no exemplo abaixo:

contexto de execução javascript

Primeiro vai ser alocado em memória todos os valores do escopo global, como foi explicado no exemplo anterior. Agora teremos o contexto de execução da função, pois ela foi executada.

No contexto de execução local, ou da função multiplicador, a primeira coisa que será guardada em memória é o numberParam que irá receber o valor de 10 e depois o result que irá receber 20.

Ao final da execução, o garbage collector irá entrar em ação, excluindo da memória o contexto de execução do multiplicador.

Então, teremos um contexto de execução global, mas podem existir vários contextos de execução da função e/ou funções filha.

Curso Next.js - Aplicações Dinâmicas Conhecer o curso

Fases do contexto de execução

Todo o processo demonstrado anteriormente passa por duas fases, a de criação e execução.

Fase de criação

Na fase de criação a engine prepara todo ambiente antes de executar o código. Nessa fase envolve as seguintes etapas:

  • Cria o Variable Object
  • Cria o Scope Chain
  • Seta o valor de this

Para entendermos o que acontece na fase de criação, do contexto de execução, vou utilizar um Objeto JavaScript como exemplo.

Entenda que esse é um exemplo meramente ilustrativo para facilitar o entendimento e não é algo que seja manipulável e palpável.

Hoisting

É interessante saber que é nesta etapa que ocorre o Hoisting

O hoisting é uma maneira que o JavaScript tem de levantar as declarações de variáveis e funções, permitindo o acesso a variáveis e funções antes de sua declaração.

Criação do contexto de execução

O variableObject contém os argumentos da função, variáveis internas e a declaração da função.

const objetoContextoExecucao = {
	variableObject: {}
}

Se fossemos fazer uma analogia do variableObject, que estamos usando como exemplo, ele teria os valores alocados em memória nos exemplos anteriores, como, por exemplo:

const number = 10;

function multiplicador(numberParam){
	const result = numberParam * 2;
	return result;
}

const result = multiplicador(number);

Com este código, teremos o seguinte cenário do variableObject:

const objetoContextoExecucao = {
	variableObject: {
		number: 10,
		multiplicador: function multiplicador(numberParam){
			const result = numberParam * 2;
			return result;
		},
		result: undefined
	}
}

Formação Desenvolvedor Next.js Conhecer a formação

Criação do Scope Chain

O scopeChain é composto pelo variableObject da função e pelos variableObject das funções filhas

const objetoContextoExecucao = {
	variableObject: {},
	scopeChain: [{},{}],
	this: globalThis
}

Com isso, o contexto de execução tem o scopeChain, que pode ter vários variableObject, e mais as propriedades do escopo global.

O contexto de execução global e o da função ficarão da seguinte forma:

// escopo global
const global = {
	variableObject: {
		number: 10,
		multiplicador: function multiplicador(numberParam){
    		const result = numberParam * 2;
    		return result;
		},
	},
	scopeChain: [global.variableObject].
	this: globalThis
}

// escopo da função multiplicador
const multiplicador = {
	variableObject: {
		numberParam: 10,
		result: 20,
	},
	scopeChain: [
		global.variableObject,
		multiplicador.variableObject,
	],
	this: globalThis
}

Fase de execução

A fase da execução é basicamente quando nosso código é executado e as funções são empilhadas na Call stack.

Durante essa fase a engine vai executar o código linha por linha e atribuir os valores nas variáveis, chamando as funções até o final da execução do código.

Conclusão

Neste artigo exploramos o conceito de contexto de execução no JavaScript, que é fundamental para entender como o código é executado e gerenciado pela engine

Esperamos que este artigo tenha ajudado a esclarecer esse conceito importante e tenho certeza de que o curso de JavaScript - Orientação a objetos irá ajudá-lo a se tornar um desenvolvedor muito melhor. São 02h49 de video com muito conteúdo e um total de 16 exercícios.

Continue lendo

Artigos relacionados

Um ano de acesso total para você viver de programação.

Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro console.log ao mercado de trabalho.

  • 1 ano de acesso a todos os cursos
  • Cursos novos toda semana
  • Suporte direto com professores
  • Plano de carreira personalizado
  • Certificados digitais inclusos
  • Aplicativos para Android e iOS, com acesso offline
Garantia incondicional de satisfação

Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

Acesso completo a todos os cursos e dezenas de Formações.

12 meses
Economize R$ 840,00 54% OFF

de 12x R$ 129,00 por apenas

12x R$ 59,00

sem juros no cartão de crédito ou R$ 599,00 à vista

Oferta termina em 15h 14min 55s

  • Acesso imediato e ilimitado durante 1 ano.
  • Plano de carreira personalizado.
  • Suporte direto com professores.
  • E muito mais!
Matricule-se agora