3
votes

Même après avoir défini une fonction, l'erreur se produit et dit que la fonction n'est pas définie

En javaScript Après avoir appelé getSavedTodos ()

Une erreur s'est produite, Uncaught ReferenceError: getSavedTodos n'est pas défini

Une erreur se produit même après avoir défini la fonction getSavedTodos ()

J'utilise du code VS

const todos = getSavedTodos()


const filters = {
    search: '',
    hideFalseStates: false
}


const getSavedTodos = function() {
    const todoJSON=localStorage.getItem('todo')
    if(todoJSON !== null) {
        return JSON.parse(todoJSON)
    }
}

Je ne connais pas l'occurrence de l'erreur, y a-t-il quelque chose de changé dans le format du code?


1 commentaires

Je ne peux pas l'appeler avant qu'il ne soit défini. Si c'était une déclaration de fonction à la place, elle serait hissée et fonctionnerait


4 Réponses :


1
votes

Vous devez déclarer la fonction avant la variable qui la référence.

const filters = {
    search: '',
    hideFalseStates: false
}

const getSavedTodos = function() {
    const todoJSON = localStorage.getItem('todo')
    if(todoJSON!==null) {
        return JSON.parse(todoJSON)
    }
}

const todos = getSavedTodos()


0 commentaires

4
votes

Vos erreurs sont dues au fait que vous avez appelé la fonction avant de la définir. Le code est lu de haut en bas, vous ne pouvez donc utiliser aucune variable ou fonction avant de le définir.

const todos = getSavedTodos() //<-- Move this to after you defined the function

const filters = {
    search: '',
    hideFalseStates: false
}


const getSavedTodos = function(){
    const todoJSON = localStorage.getItem('todo')
    if(todoJSON !== null) {
        return JSON.parse(todoJSON)
    }
}


0 commentaires

4
votes

Vous l'utilisez avant de le définir.

Vous avez deux options:

  1. Déplacez simplement votre définition jusqu'à avant de l'utiliser:

    const todos = getSavedTodos()
    
    const filters={
        search: '',
        hideFalseStates: false
    }
    
    function getSavedTodos(){
        const todoJSON=localStorage.getItem('todo')
        if(todoJSON!==null)
        {
            return JSON.parse(todoJSON)
        }
    }
    
  2. Utilisez une fonction déclaration plutôt qu'une fonction expression , car celles-ci sont hissées (elles sont évaluées avant l'évaluation pas à pas du code):

    const getSavedTodos=function(){
        const todoJSON=localStorage.getItem('todo')
        if(todoJSON!==null)
        {
            return JSON.parse(todoJSON)
        }
    }
    
    const todos = getSavedTodos()
    
    const filters={
        search: '',
        hideFalseStates: false
    }
    


0 commentaires

1
votes

Vous ne pouvez appeler une fonction définie ultérieurement que si vous utilisez la déclaration function ...

bar(); // Doesn't work, move after to get it working
var bar = function() {
    console.log("Hey");
};

si à la place vous affectez la fonction à une variable alors la liaison est une affectation normale et vous ne pouvez l'appeler qu'après l'exécution de l'affectation:

foo(); // works
function foo() {
    console.log("Hey");
}


0 commentaires