[quote=yschmitzz]ajudou sim, valeu
só meio que to na decoreba ainda, nao ta entrando na minha cabeça que tem uma diferença entre declarar a função dentro do parametro e nao declarar
porque, pra mim essa situação é a mesma que essa
function exemplo() {
var x =0;
for (x;x<5;x++); //declarado fora do elemento for
document.getElementById("p1").innerHTML=x;
for (var y=0;y<5;y++); //declarando dentro do elemento for
document.getElementById("p2").innerHTML=y;
}
pode ver que nao tem diferença, pra mim é a mesma coisa, mas isso vai ter que entrar na cabeça :p[/quote]
Na verdade isso parece ser a mesma coisa, mas realmente não é, vamos tentar usar o exemplo 1:
var x =0;
for (x;x<5;x++); // observe o ponto e virgula que você colocou
document.getElementById("p1").innerHTML= x; // aqui x vale 4 correto
Nesse exemplo você declarou o x antes do laço e ele será acessível tanto dentro do laço (x++), quanto fora (innerHTML = x)
Já no segundo caso:
for (var y=0;y<5;y++); // observe novamente o ponto e virgula que voce colocou aqui também
document.getElementById("p2").innerHTML= y; // pela lógica, y não seria acessível, pois foi declarado dentro do laço
Percebeu como começam a mudar as coisas?
Isso tecnicamente chamamos de regra de escopo (onde a variável pode ser alcançada).
Concorda comigo que se eu declarei uma variável dentro do laço, ela não poderia ser acessada por mais ninguém fora dele?
Daí você me pergunta, mas como y atribuiu 4 da mesma forma que x?
Eu te respondo, mistérios da meia noite! rsrsrs, bemvindo as pegadinhas da programação web.
Brincadeiras à parte, aconselho você sempre testar seu código em mais de um navegador, dessa forma alguns podem deixar o y passar, outros não e assim você vai se familiarizando com o que cada ambiente faz.
Os navegadores atuais possuem um mecanismo de debug (chamado console) e com ele você consegue visualizar os erros que podem acontecer como "y is undefined" ou "y is not declared" e assim por diante.
Espero ter ajudado.