1

希望你能回答!

var myform = document.getElementById("myform"),
saveBtn = document.getElementById("submit");
saveBtn.addEventListener("click", saveInfo);

var saveInfo = function (e){
    e.preventDefault();
    var dateValue = document.getElementById("inputdeadline").value;
    var todoValue = document.getElementById("textarea").value;
    todoValue = todoValue.replace(/\n/g,"   ");
    if ( dateValue > 24 || dateValue <= 0) {
        myform.reset();
        return false;
    };
    if (!(todoValue)) {
        myform.reset();
        return false;
    };
    var todoObj = {
        todoValue,
        dateValue
    };
    if (localStorage.getItem("localTodoItem") === null) {
        var todoArray = [];
        todoArray.push(todoObj);
        todoArray.sort(function (a, b) {
            return a.dateValue - b.dateValue;
        });
        localStorage.setItem("localTodoItem", JSON.stringify(todoArray));
    } else {
        var todoArray = JSON.parse(localStorage.getItem("localTodoItem"));
        todoArray.push(todoObj);
        todoArray.sort(function (a, b) {
            return a.dateValue - b.dateValue;
        });
        localStorage.setItem("localTodoItem", JSON.stringify(todoArray));
    };
    showTodoItems();
    myform.reset();
};

在这里,当我为此 saveInfo 函数使用函数声明时,它正确地执行了所有功能,但是当我使用函数表达式时,它只是重新加载页面,没有任何反应。请帮我。如果您需要更多关于代码的说明, 请访问 github

4

1 回答 1

2

这是因为函数声明被提升了,而函数表达式没有。您在saveInfo执行表达式之前使用,这适用于声明但不适用于表达式。

MDN 上的函数声明提升

于 2017-09-19T15:50:15.480 回答