【问题标题】:Difficulties with using function expression使用函数表达式的困难
【发布时间】:2017-09-19 15:47:00
【问题描述】:

希望你能回答!

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 的说明。

【问题讨论】:

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


    【解决方案1】:

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

    Function declaration hoisting on MDN

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 2015-10-07
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多