Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não aparece nada no navegador

Bom dia , Não aparece nada no navegador ... Desde já obrigada

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        document.write("<br>");
        document.write("<br>");

        function mostra() {

            document.write("ola");
        }


    }

    var ano = 2016;

    //document.write("Flavio tem " + (ano-1977) + "anos");
    mostra("Flavio tem " + (ano-1977) + "anos");)

    pulaLinha();

    //document.write("Joaquim tem "+ (ano-1996) + "anos");
    mostra("Joaquim tem "+ (ano-1996) + "anos");

    pulaLinha();

    ano = 2017;
    //document.write("Barney tem " + (ano-1976) + "anos");
    mostra("Barney tem " + (ano-1976) + "anos");

    //document.write("ola pessoal!");
    mostra("ola pessoal!");



</script>
1 resposta
solução!

Oi Vanessa,

O grande problema é que você misturou o código, e perdeu o escopo das funções, além de adicionar caracteres a mais no código.

Vamos por partes. A primeira coisa que você deve saber, é que seu navegador é preparado para te ajudar a solucionar problemas de programação, para isso, existe o Developer Tools e extensões para navegador que te ajudam no processo de debugging.

Eu estou usando o navegador Opera para estes exemplos, mas qualquer outro navegador segue os mesmos principios.

A primeira coisa a se fazer é abrir o console para verificar se existem erros.

Faça isso clicando com o botão direito na tela e "Inspect Element" ou "Inspecionar Elemento"

Procure pela aba escrita "Console" e clique nela. Logo de cara encontramos o seguinte erro.

Uncaught SyntaxError: Unexpected token )

Essa mensagem nos diz que existe um ) e mais no código. Dando uma procurada no código achei o seguinte trecho

mostra("Flavio tem " + (ano-1977) + "anos");)

Veja que no final existe um ) a mais que não deveria estar ali.

Remova o ) sobrando, salve e teste novamente.

Vamos nos deparar com um novo erro, que é o seguinte

Uncaught ReferenceError: mostra is not defined

Isso nos diz que a função mostra que você está tentando usar não está definida, ou seja não foi definido em lugar nenhum que ela está pronta para uso e o que ela faz.

Porém, olhando no seu código encontramos a função mostra sendo definida logo dentro da função pulaLinha.

E é ai que está o problema. No Javascript temos escopo de código que é definido pelos colchetes. Ou seja

function init() {
    var variavelDefinidaDentroDeInit = true;

    if ( variavelDefinidaDentroDeInit ) {
        alert('estamos no escopo de init');
    }
    else {
        alert('não estamos no escopo de init');
    }
}

if ( variavelDefinidaDentroDeInit ) {
    alert('estamos no escopo de init');
}
else {
    alert('não estamos no escopo de init');
}

Neste caso a variavelDefinidaDentroDeInit só vai funcionar dentro da função init, e é a mesma coisa que aconteceu no seu código.

Para resolver, basta mover a função para o escopo certo, que deveria ser no mesmo nível da sua função pulaLinha

function funcao1() {}
function funcao2() {
    function funcao3() {}
}

// consiguimos usar as duas funções pois ambas estão disponíveis no escopo
funcao1();
funcao2();

// não temos acesso na funcao3 pois ela está no escopo dentro da funcao2
funcao3();

Ficando assim o seu código

<meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br>");
        document.write("<br>");
    }

    function mostra() {
        document.write("ola");
    }

    var ano = 2016;

    //document.write("Flavio tem " + (ano-1977) + "anos");
    mostra("Flavio tem " + (ano-1977) + "anos");

    pulaLinha();

    //document.write("Joaquim tem "+ (ano-1996) + "anos");
    mostra("Joaquim tem "+ (ano-1996) + "anos");

    pulaLinha();

    ano = 2017;
    //document.write("Barney tem " + (ano-1976) + "anos");
    mostra("Barney tem " + (ano-1976) + "anos");

    //document.write("ola pessoal!");
    mostra("ola pessoal!");
</script>

Att.