为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪9158850 2021-04-23 18:15:16
在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)    }}不知道错误的发生,代码格式是否有所变化?
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

您的错误是因为在定义函数之前调用了该函数。该代码是从上到下阅读的,因此在定义它之前,不能使用任何变量或函数。


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)

    }

}


查看完整回答
反对 回复 2021-04-29
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

在定义它之前,您正在使用它。


您有两种选择:


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


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)

    }

}


查看完整回答
反对 回复 2021-04-29
  • 2 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信