使用函数表达式

时间:2017-09-19 15:47:00

标签: javascript function events javascript-events function-expression

希望你能回答它!

 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函数时,它正确地执行所有功能,但是当我使用函数表达式时,它只是重新加载页面,它没有发生任何事情。 请帮我。 如果您需要有关代码please visit github

的更多说明

1 个答案:

答案 0 :(得分:2)

这是因为函数声明是hoisted,而函数表达式不是。您在执行表达式之前使用saveInfo,这适用于声明但不适用于表达式。

Function declaration hoisting on MDN