0

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

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()用键盘快捷键调用这个函数..

两者有什么区别,有什么理由更喜欢其中一个吗?

4

2 回答 2

2

第二个。

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


编辑

坦率地说,这并不重要。如果您绑定键盘事件,那么该函数将在整个文档范围内保持不变。所以两者都很好。

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

于 2013-10-24T05:46:28.967 回答
1

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

提高可读性和更易于维护

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

不浪费资源

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

不过警告。

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

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

于 2013-10-24T05:55:22.360 回答