Sombreamento de variável em javaScript?

Boa tarde galera,
tenho uma pequena dúvida e as vezes não usual.
Como posso acessar uma variável global como o mesmo nome de uma variável local dentro de uma função?

EX:

<script>
   var x = 'fora';
   function teste() {
     var x = 'local';
     alert('variavel global:', x); //Como eu chamo a variável global?
  }
</script>

O nome das variáveis tem que ser igual mesmo?

Sim cara, tem que ter o mesmo nome, sei que o código nao deve ser usual. Quero saber se tem alguma forma de acessa-la.?

Sim cara, tem que ter o mesmo nome, sei que o código nao deve ser usual. Quero saber se tem alguma forma de acessa-la.?[/quote]

Javascript não é block-scoped, por tanto, variável criado dentro de uma função sempre vai prevalecer às variáveis globais.

Tanto é que voce nao consegue criar uma constante com mesmo nome de uma variavei local, voce tem que dar nomes diferentes.

Sempre que tiver variável do mesmo nome, a variável declarada no escopo da função sempre prevalece.

O que voce quer fazer, sem muita gangiarra, não é possível.

Sim cara, tem que ter o mesmo nome, sei que o código nao deve ser usual. Quero saber se tem alguma forma de acessa-la.?[/quote]

Javascript não é block-scoped, por tanto, variável criado dentro de uma função sempre vai prevalecer às variáveis globais.

Tanto é que voce nao consegue criar uma constante com mesmo nome de uma variavei local, voce tem que dar nomes diferentes.

Sempre que tiver variável do mesmo nome, a variável declarada no escopo da função sempre prevalece.

O que voce quer fazer, sem muita gangiarra, não é possível.

[/quote]
Amigo, qual seria a gambiarra? Pesquisei na net e em alguns livros mais nao achei algo parecido, fiz essa pergunta para o professor ele me pediu pra pesquisar e dar a resposta na proxima aula :shock:

Sim cara, tem que ter o mesmo nome, sei que o código nao deve ser usual. Quero saber se tem alguma forma de acessa-la.?[/quote]

Javascript não é block-scoped, por tanto, variável criado dentro de uma função sempre vai prevalecer às variáveis globais.

Tanto é que voce nao consegue criar uma constante com mesmo nome de uma variavei local, voce tem que dar nomes diferentes.

Sempre que tiver variável do mesmo nome, a variável declarada no escopo da função sempre prevalece.

O que voce quer fazer, sem muita gangiarra, não é possível.

[/quote]
Amigo, qual seria a gambiarra? Pesquisei na net e em alguns livros mais nao achei algo parecido, fiz essa pergunta para o professor ele me pediu pra pesquisar e dar a resposta na proxima aula :shock:[/quote]

Na verdade nao é possível com mesmo nome. A gambiarra depende do que voce precisa fazer. Voce precisa manipular o valor? Copiar valor? Trocar?

Sim cara, tem que ter o mesmo nome, sei que o código nao deve ser usual. Quero saber se tem alguma forma de acessa-la.?[/quote]

Javascript não é block-scoped, por tanto, variável criado dentro de uma função sempre vai prevalecer às variáveis globais.

Tanto é que voce nao consegue criar uma constante com mesmo nome de uma variavei local, voce tem que dar nomes diferentes.

Sempre que tiver variável do mesmo nome, a variável declarada no escopo da função sempre prevalece.

O que voce quer fazer, sem muita gangiarra, não é possível.

[/quote]
Amigo, qual seria a gambiarra? Pesquisei na net e em alguns livros mais nao achei algo parecido, fiz essa pergunta para o professor ele me pediu pra pesquisar e dar a resposta na proxima aula :shock:[/quote]

Na verdade nao é possível com mesmo nome. A gambiarra depende do que voce precisa fazer. Voce precisa manipular o valor? Copiar valor? Trocar?[/quote]
Eu preciso enchergar ela, imprimir ela na tela, sei la, alguma maneira de acessa-la.
Obrigado, pelas respostas ate o momento.

[quote]
lucasmurata
Na verdade nao é possível com mesmo nome.[/quote]
Na verdade é possivel sim usando o this

&lt;script type="text/javascript"&gt;
	var x = "Algum Texto Aki: Variavel Global";
	function go(){
		var x = "Algum Texto Aki: Variavel Dentro da Função";
		alert(this.x); alert(x);
	}
	go();
&lt;/script&gt;

[quote=jweibe][quote]
lucasmurata
Na verdade nao é possível com mesmo nome.[/quote]
Na verdade é possivel sim usando o this

&lt;script type="text/javascript"&gt; var x = "Algum Texto Aki: Variavel Global"; function go(){ var x = "Algum Texto Aki: Variavel Dentro da Função"; alert(this.x); alert(x); } go(); &lt;/script&gt; [/quote]

Nesse seu exemplo dá. Mas tem que tomar cuidado com a palavra-chave this. Ela nem sempre referencia a variável global como no seu exemplo. A função do this muda de acordo com o contexto em que o uso, já que em javascript tenho 5 formas de chamar uma função.

Olha este exemplo:


var x = "fora";

var a = {

   b : function a (){

      var x = "dentro";
      alert(this.x);
      alert(x);

   }


}

a.b();

Nesse caso ele nao reconhece o this.x como variável global. E se eu manter somente o x ele se assumira como variável local.

Portanto, melhor opção é dar nome corretamente às variáveis.

Muito bem lembrado lucasmurata… o exemplo que eu postei foi uma forma de
resolver o problema levantado pelo diegohsi. Que por sua vez acessa a variavel
como ele quer…