结合两个 JavaScript 函数

combining two javascript functions

本文关键字:两个 JavaScript 函数 结合      更新时间:2023-09-26

组合以下函数有什么好处吗?

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()函数。

两者之间有什么区别,有什么理由偏爱一个而不是另一个吗?

第二个。

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


编辑

坦率地说,这并不重要。如果绑定键盘事件,则该函数将在整个文档范围内保留在作用域中。所以任何一个都会很好。

此外,SO中的问题更注重问题。请改为尝试 https://codereview.stackexchange.com/。

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

提高可读性,更易于维护

显然,阅读和维护一个函数比两个函数更容易,并且您将代码完全保存在一个地方。

不浪费资源

你在函数中创建所需的变量,当你完成它时,它们就会消失。

不过,警告。

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

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