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>
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
<script type="text/javascript">
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();
</script>
[quote=jweibe][quote] lucasmurata
Na verdade nao é possível com mesmo nome.[/quote]
Na verdade é possivel sim usando o this
<script type="text/javascript">
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();
</script>
[/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…