Duvida num código simples (iniciante)

JavaScript

Olá, sou iniciante na programacao e estava pondo em pratica algumas coisas que aprendi mas me deparei um problema que estou tendo, segue o código abaixo:

var nome = "pedro"
function dizer() {
    console.log(`${this.nome} é legal`)
}

dizer()

Ao executar o código no VS Code retorna o valor undefined, porém ao executar o código no browser retorna "Pedro é legal", o que pode estar acontecendo?

 

Foto de Victor S.
Victor perguntou há 1 ano

Sabe a resposta?

Ganhe 10 pts por resposta de qualidade
Responder dúvida
3 respostas
0
votos
Nenhum usuário votou nessa resposta como útil.
Professor Angelo R.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 1 ano

É preciso entender contexto/escopo em Javascript para entender o this.
As variáveis declaradas dentro da funções possuem contexto local.
As variáveis declaradas fora da função possuem contexto global.
Você pode passar parâmetro(s) para a função:

const name = 'nome aqui'

function greeting(name) {
return `Olá ${name} !`)
}

// para executar a função
greeting()

${} - Sobre o template string - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

this - Sobre o this - https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/this




Envie uma dúvida gratuitamente

Envie sua primeira dúvida gratuitamente aqui no Tira-dúvidas Profes. Nossos professores particulares estão aqui para te ajudar.

0
votos
Nenhum usuário votou nessa resposta como útil.
Professora Talita A.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 1 ano

O comportamento diferente que você está observando ao executar o mesmo código no VS Code e no navegador pode estar relacionado ao fato de que o escopo do objeto global (window no navegador, ou global no Node.js) é tratado de maneira diferente em cada um desses ambientes.

No navegador, o objeto window é o escopo global padrão, e todas as variáveis e funções globais são definidas nesse objeto. Quando você define a variável nome fora da função dizer(), ela se torna uma propriedade do objeto global window, e pode ser acessada em qualquer lugar do código.

Já no ambiente do Node.js, o escopo global é o objeto global, e não há uma propriedade global nome definida. Por isso, quando você chama a função dizer() no Node.js, o valor de this.nome é undefined.

Para corrigir esse problema, você pode passar o valor de nome como um argumento para a função dizer(), em vez de usá-lo como uma propriedade do objeto global. Assim, a função terá acesso ao valor correto de nome, independentemente do ambiente em que estiver sendo executada.

function dizer(nome) {
  console.log(`${nome} é legal`);
}

var nome = "Pedro";
dizer(nome);

Dessa forma, o valor "Pedro é legal" será impresso corretamente no console, tanto no ambiente do Node.js quanto no navegador.

Espero que isso ajude!



0
votos
Nenhum usuário votou nessa resposta como útil.
Professor Elias G.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 2 meses

Olá,

var nome = "pedro";

function dizer() {
    console.log(`${nome} é legal`);
}

dizer();



----
Espero ter ajudado!

Está precisando de Aulas Particulares?

Aqui no Profes você encontra os melhores professores particulares, presenciais ou online, para aulas de qualquer assunto!

Professores particulares de JavaScript

+ Ver todos
Encontre professor particular para te ajudar nos estudos
R$ 80 / h
Angelo R.
Rio Claro / SP
Angelo R.
4,3 (4 avaliações)
Tarefas resolvidas 5 tarefas resolvidas
Identidade verificada
  • CPF verificado
  • E-mail verificado
JavaScript - React JavaScript - CSS Javascript Geral
Graduação: Gestão de Tecnologia da Informação (Centro Brasileiro de Tecnologia Aplicada)
Aulas de desenvolvimento frontend iniciantes (html, css, javascript)
R$ 70 / h
Vinícius B.
Santo André / SP
Vinícius B.
5,0 (13 avaliações)
Horas de aulas particulares ministradas 21 horas de aula
Tarefas resolvidas 5 tarefas resolvidas
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
JavaScript Básico JavaScript - Back-End JavaScript - Estrutura Condicional e operadores lógicos. Expressões lógicas.
MBA: Business Intelligence (Faculdade Descomplica)
Te ensino a programar. Professor de programação, com 5 anos de atuação em .net, sql, entity framework, scrum etc.
R$ 50 / h
Gustavo A.
Campina Grande / PB
Gustavo A.
5,0 (2 avaliações)
Horas de aulas particulares ministradas 7 horas de aula
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
JavaScript - Estrutura Condicional e operadores lógicos. Expressões lógicas. Javascript Geral JavaScript Básico
Graduação: Engenharia da Computação (IFPB - Campus Campina Grande )
Desenvolvedor web python e javascript. Acompanhamento particular em python, html,css e javascript