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

Erro function expression

Ao transformar a função createSprite em variável, o console retornou com o seguinte erro: sprite.js:1 Uncaught TypeError: createSprite is not a function at sprite.js:1

se eu retorno apenas o createSprite para função declarada, o código funciona perfeitamente. Imagino que o problema esteja em passar um parâmetro na primeira linha.

O que eu fiz de errado?

var sprite = createSprite(".sprite");
setInterval(function(){
    sprite.nextFrame();
    },500);




var createSprite = function(selector) {

    var $el = $(selector);

    var frames = ["frame1", "frame2","frame3","frame4","frame5","frame6","frame7","frame8","frame9"]

    var current = 0;

    var last = frames.length - 1;

    $el.addClass(frames[current]);


    var moveFrame = function(from,to) {
        $el.removeClass(from)
        .addClass(to);

      }  

    var hasNext = function(){

        return current +1 <= last;
    } 

    var nextFrame = function () {

        if(hasNext()){
            moveFrame(frames[current], frames[++current]);
        }


    }

    return{
        nextFrame: nextFrame
    };

}
3 respostas
solução!

Boa noite, Clarisse! Como vai?

Como mostrado na aula do Flávio, utilizando function expression como vc fez, terá que declarar a createSprite() antes de utilizar ela, uma vez que ao criar funções com function expression o Javascript deixa de fazer o function hoisting (içamento de função) que é feito quando vc declara funções com function declaration.

O código correto deveria ser:

var createSprite = function(selector) {
     // código omitido
}

var sprite = createSprite(".sprite");
setInterval(function(){
     sprite.nextFrame();
},500);

Grande abraço e bons estudos!

Muito obrigada!

Por nada, Clarisse!

Sempre que tiver alguma dúvida é só procurar o pessoal aqui no fórum!

Grande abraço e bons estudos!