即使在定义函数后,也会发生错误,并说未定义函数

时间:2019-04-13 15:28:03

标签: javascript function

在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)
    }

}

不知道错误的发生,代码形式有什么变化吗?

4 个答案:

答案 0 :(得分:4)

您在定义之前 使用它。

您有两个选择:

  1. 在使用之前,只需将定义上移至

    const getSavedTodos=function(){
        const todoJSON=localStorage.getItem('todo')
        if(todoJSON!==null)
        {
            return JSON.parse(todoJSON)
        }
    }
    
    const todos = getSavedTodos()
    
    const filters={
        search: '',
        hideFalseStates: false
    }
    
  2. 使用函数 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");
};