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?
4 Réponses :
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()
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)
}
}
Vous l'utilisez avant de le définir.
Vous avez deux options:
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)
}
}
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
}
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");
}
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