#javascript #function
#javascript #функция
Вопрос:
В JavaScript после вызова getSavedTodos()
Возникает ошибка, неперехваченная ошибка ссылки: getSavedTodos не определен
ошибка возникает даже после определения функции getSavedTodos()
Я использую VS code
const todos = getSavedTodos()
const filters = {
search: '',
hideFalseStates: false
}
const getSavedTodos = function() {
const todoJSON=localStorage.getItem('todo')
if(todoJSON !== null) {
return JSON.parse(todoJSON)
}
}
не знаю возникновения ошибки, есть ли какие-то изменения в формате кода?
Комментарии:
1. Не удается вызвать ее до того, как она будет определена. Если бы вместо этого это было объявление функции , оно было бы поднято и работало бы
Ответ №1:
Ваши ошибки связаны с тем, что вы вызвали функцию до ее определения. Код читается сверху вниз, поэтому вы не можете использовать какую-либо переменную или функцию до ее определения.
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)
}
}
Ответ №2:
Вы используете ее до ее определения.
У вас есть два варианта:
-
Просто переместите свое определение до, прежде чем использовать его:
const getSavedTodos=function(){ const todoJSON=localStorage.getItem('todo') if(todoJSON!==null) { return JSON.parse(todoJSON) } } const todos = getSavedTodos() const filters={ search: '', hideFalseStates: false }
-
Используйте объявление функции, а не выражение функции, поскольку они подняты (они оцениваются перед пошаговой оценкой кода):
const todos = getSavedTodos() const filters={ search: '', hideFalseStates: false } function getSavedTodos(){ const todoJSON=localStorage.getItem('todo') if(todoJSON!==null) { return JSON.parse(todoJSON) } }
Ответ №3:
Вы можете вызвать функцию, которая будет определена позже, только если вы используете function
объявление…
foo(); // works
function foo() {
console.log("Hey");
}
если вместо этого вы назначаете функцию переменной, тогда привязка является обычным назначением, и вы можете вызвать ее только после выполнения назначения:
bar(); // Doesn't work, move after to get it working
var bar = function() {
console.log("Hey");
};
Ответ №4:
Вам нужно объявить функцию перед переменной, которая ссылается на нее.
const filters = {
search: '',
hideFalseStates: false
}
const getSavedTodos = function() {
const todoJSON = localStorage.getItem('todo')
if(todoJSON!==null) {
return JSON.parse(todoJSON)
}
}
const todos = getSavedTodos()