组合以下功能有什么好处吗?
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()
函数.. 两者之间有什么区别,是否有理由偏爱另一方?
答案 0 :(得分:2)
第二个。
如果 newNote 的范围仅限于onload函数,则没有理由弄脏全局范围。
修改强>
坦率地说,这并不重要。如果绑定键盘事件,则该函数将保留在整个文档范围的范围内。所以要么是好的。此外,SO中的问题更加面向问题。请改为https://codereview.stackexchange.com/。
答案 1 :(得分:1)
这可能主要是基于意见的,但我会选择第二个 原因:
显然更容易阅读和维护一个功能而不是两个功能,并且您将代码完全保存在一个位置。
您可以在函数中创建所需的变量,并在完成后消失。
你应该知道有些事情要避免。例如,如果您的newNote
函数随着时间的推移需要越来越多的参数,您可以考虑更改范围,并可能将其保留在函数之外,以避免使用(假设)函数十几个论点,因为你只是失去了上面列出的好处。
P.S。:我认为您描述的第二个代码有一些错误。除非你只是这样写它来解释你打算做什么。 (我说的是textarea.value = txt || "";
)