Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Dúvida: is not defined

Boa Tarde Professores e Alunos, estou realizando o curso Javascript: Projeto de conclusão e por mais que eu consiga implementar as regras das funções não consigo entender muito bem a parte de objetos e returns..

var criaJogo = function() {

    var setPalavraSecreta = function (palavra) {

        console.log('falta implementar');    
    };

    var getLacunas = function () {
        console.log('falta implementar');    
    };

    var getEtapa = function () {
        console.log('falta implementar');    
    };

    return {

        setPalavraSecreta: setPalavraSecreta, 
        getLacunas: getLacunas,
        getEtapa: getEtapa
    };
};

Mesmo que eu crie todas as funções e de o return para a função anonima acaba aparecendo

var jogo = criaJogo(); // meu comando no console
VM124:1 Uncaught ReferenceError: criaJogo is not defined at <anonymous>:1:12 // resposta

criaJogo não seria a função que eu criei lá?.

criaJogo é um objeto de jogo ?

Como esse curso é um curso mais prático e eu gostaria de treinar bastante não posso deixar essa dúvida em vão..

Valeu pessoal.

7 respostas

Boa noite, Lucas! Como vai?

criaJogo não seria a função que eu criei lá?. criaJogo é um objeto de jogo ?

Na realidade, criaJogo é uma variável que armazena uma função anônima. E quando vc faz criaJogo() vc está executando a função armazenada na variável criaJogo(). Por sua vez, essa função anônima retorna um objeto Javascript.

Pegou a ideia?

Mas se criaJogo retorna uma função anônima e eu chamo ela em

var jogo = criaJogo();

Por que retorna not defined se ela possui variáveis e objetos ?

Como vc está tentando fazer isso?

Eu executei o seu código no console do navegador e não tive problema algum! Dá uma olhada no print que tirei!

O que deve estar acontecendo é que vc deve estar fazendo var jogo = criaJogo() num momento em que a função anônima ainda não foi carregada na variável criaJogo.

Provavelmente é erro de atenção meu, mas continua retornando o erro de

Uncaught ReferenceError: criajogo is not defined
    at <anonymous>:1:12

Documento html normal importando o arquivo

<body>
    <div class="jumbotron">
        <h2 class="text-center">Jogo da forca</h2>
    </div>
    <div class="container">

        <!-- div com a classe sprite -->
        <div class="sprite"></div>

        <ul class="lacunas text-center"></ul>

        <div class="text-center">
        <input id="entrada"
            class="entrada"
            placeholder="Palavra secreta" autofocus>
        </div>
    </div>

    <script src="js/jquery.min.js"></script>
    <script src="js/sprite.js"></script>
    <script src="js/jogo.js"></script>
</body>

e jogo.js

var criaJogo = function() {

    var setPalavraSecreta = function (palavra) {
        console.log('falta implementar');
    };

    var getLacunas = function () {
        console.log('falta implementar');
    };

    var getEtapa = function () {
        console.log('falta implementar');
    };

    return {

        setPalavraSecreta: setPalavraSecreta,
        getLacunas: getLacunas,
        getEtapa: getEtapa
    };
};

Quando vou rodar o comando

var jogo = criajogo();

Retorna o erro lá que eu mencionei em cima..

solução!
var jogo = criajogo();

Vc está executando esse código onde? No console do navegador? E está executando exatamente assim como vc escreveu?

O Javascript é uma linguagem case sensitive! Estou dizendo isso pq vc definiu o nome da variável como sendo criaJogo, com "J" maiúsculo e está chamando criajogo() com "j" minúsculo.

Era isso mesmo Gabriel hahaha, meu Deus que erro foi esse -.-' básico...

Opa, ótimo! O aprendizado que fica é sempre que tiver esse tipo de erro verificar se está escrevendo corretamente o nome do que vc está tentando se referir!

Grande abraço e bons estudos, Lucas!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software