在javaScript中 调用getSavedTodos()
之后发生错误, 未捕获的ReferenceError:未定义getSavedTodos
即使定义了函数getSavedTodos(),也会发生错误
我正在使用VS代码
const todos = getSavedTodos()
const filters={
search: '',
hideFalseStates: false
}
const getSavedTodos=function(){
const todoJSON=localStorage.getItem('todo')
if(todoJSON!==null)
{
return JSON.parse(todoJSON)
}
}
不知道错误的发生,代码形式有什么变化吗?
答案 0 :(得分:4)
您在定义之前 使用它。
您有两个选择:
在使用之前,只需将定义上移至
const getSavedTodos=function(){
const todoJSON=localStorage.getItem('todo')
if(todoJSON!==null)
{
return JSON.parse(todoJSON)
}
}
const todos = getSavedTodos()
const filters={
search: '',
hideFalseStates: false
}
使用函数 declaration 而不是函数 expression ,因为这些是悬挂的(它们在逐步评估代码之前得到评估):
const todos = getSavedTodos()
const filters={
search: '',
hideFalseStates: false
}
function getSavedTodos(){
const todoJSON=localStorage.getItem('todo')
if(todoJSON!==null)
{
return JSON.parse(todoJSON)
}
}
答案 1 :(得分:3)
您的错误是因为在定义函数之前调用了该函数。该代码是从上到下阅读的,因此在定义变量或函数之前,不能使用它。
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 :(得分:1)
您需要在引用该函数的变量之前声明该函数。
const filters={
search: '',
hideFalseStates: false
}
const getSavedTodos=function(){
const todoJSON=localStorage.getItem('todo')
if(todoJSON!==null)
{
return JSON.parse(todoJSON)
}
}
const todos = getSavedTodos()
答案 3 :(得分:1)
仅当使用function
声明时,才可以调用以后定义的函数...
foo(); // works
function foo() {
console.log("Hey");
}
相反,如果您将函数分配给变量,则绑定是常规分配,并且只有在执行分配后才能调用它:
bar(); // Doesn't work, move after to get it working
var bar = function() {
console.log("Hey");
};