【发布时间】:2019-07-02 19:28:23
【问题描述】:
在我去找同事进行代码审查之前,我想知道最佳做法是什么。
我知道以下代码有效。我的问题是,JavaScript 是否普遍接受这种方式依赖闭包,或者这里是否存在我遗漏的问题?谢谢
编辑:更新了 sn-p 以更清楚地显示我想要实现的目标(更清晰、更易读的代码)
// All this is happening inside a function. Declared vars are not global.
var x, y, z; // lots of variables to declare (to use in closures)
setupVars(true); // lots of variables to setup
useVars(); // lots of variables to use
function setupVars(condition) {
if(condition){
x = 1;
y = 2;
z = 3;
} else {
x = 4;
y = 5;
z = 6;
}
};
function useVars(){
console.log(x);
console.log(y);
console.log(z);
}
【问题讨论】:
-
请考虑发帖到:Code Review
-
@RandyCasburn 感谢您的关注。是的,这个 sn-p 是我真正在做的最简单的例子,结果证明是微不足道的。我已经更新了我的问题,以便更清楚。
-
一般来说,过度使用全局变量往往是糟糕的编程风格,但它们有适当的时机。如果你使用它们,在函数中更新它们是正常的。
-
@Barmar 这些变量不是全局的,因为它们位于窗口对象上。所有这些代码都发生在另一个函数中。我只是希望这部分是可读的,并且没有太多的 if 语句。
-
感谢您更新问题。这应该会通过您的代码审查,除非对使用 Globals 有硬性限制。您组织的编码风格指南应该告诉您这一点。另一种方法是使用 ES6 模块或 IIFE 围绕所有这些创建一个闭包。
标签: javascript scope closures