结合两个javascript函数

时间:2013-10-24 05:42:22

标签: javascript

组合以下功能有什么好处吗?

window.onload = function() {
  if (localStorage.getItem("txt")) {
    textarea.value = localStorage.getItem("txt");
    changeDocTitle(localStorage.getItem("filename"));
    isModified = true;
  } else {
    changeDocTitle(untitled);
  }
};

function newNote() {
  if (!isModified || dontSave()) {
    textarea.value = "";
    changeDocTitle(untitled);
  }
  textarea.focus();
}

组合后,它将如下所示:

window.onload = function() {
  if (localStorage.getItem("txt")) {
    newNote(localStorage.getItem("txt"), localStorage.getItem("filename"));
  } else {
    newNote();
  }
};

function newNote(txt, filename) {
  if (!isModified || dontSave()) {
    textarea.value = txt || "";
    changeDocTitle(filename || untitled);
    if (textarea.value) {
      isModified = true;
    }
  }
  textarea.focus();
}
  • 我也会用键盘快捷键调用newNote()函数..

两者之间有什么区别,是否有理由偏爱另一方?

2 个答案:

答案 0 :(得分:2)

第二个。

如果 newNote 的范围仅限于onload函数,则没有理由弄脏全局范围。


修改

坦率地说,这并不重要。如果绑定键盘事件,则该函数将保留在整个文档范围的范围内。所以要么是好的。

此外,SO中的问题更加面向问题。请改为https://codereview.stackexchange.com/

答案 1 :(得分:1)

这可能主要是基于意见的,但我会选择第二个 原因:

提高可读性和更轻松维护

显然更容易阅读和维护一个功能而不是两个功能,并且您将代码完全保存在一个位置。

不浪费资源

您可以在函数中创建所需的变量,并在完成后消失。

但是警告。

你应该知道有些事情要避免。例如,如果您的newNote函数随着时间的推移需要越来越多的参数,您可以考虑更改范围,并可能将其保留在函数之外,以避免使用(假设)函数十几个论点,因为你只是失去了上面列出的好处。

P.S。:我认为您描述的第二个代码有一些错误。除非你只是这样写它来解释你打算做什么。 (我说的是textarea.value = txt || "";