Javascript,使用一个本地对象而不是许多本地变量

标签 javascript variables object global-variables local-variables

我经常使用 jslint 和工具来验证我的代码是否存在编程错误等...

在编程过程中,我经常发现我需要局部变量或局部函数来完成一些简单的事情。因此,我转到本地范围顶部的主要单个 var 语句并进行调整,有时会破坏我的创意流程。因此,有时我会在代码中间声明一行 var 来继续编程,然后在重构期间将其移至顶部 var 语句。

我今天有一个想法想要探索,但在 Google 或 stackoverflow 上没有找到任何内容。

我的想法是这样的,只需声明一个临时对象并根据需要使用它。例如:为新变量或函数添加一些属性。

所以代替:

// if I omit the last comma, the next variable will be a global
var variable1 = "Hello World!",  
variable2 = "Testing...";  

(... some code ...)
var variable3 = 42;

我会使用:

var temp = {};
temp.variable1 = "Hello World!";
temp.variable2 = "Testing...";

(... some code ...)
temp.variable3 = 42;

因此,我不会冒污染全局命名空间的风险,我会根据需要声明变量,并且不会与 var 语句发生冲突,因为我总是知道变量前面带有“temp”。属于本地范围。

任何评论或建议将不胜感激。

最佳答案

问自己一个问题:你见过其他人这样做吗?我个人没有。这应该表明您有充分的理由不这样做。 本质上你所建议的是“命名空间”,并不是什么新鲜事。在很多情况下都很好,但在这里 - 对于临时变量 - 我建议它突出显示代码味道。

您提到了全局 namespace 的污染,但这应该很少成为问题。通过将代码分解为函数、类或模块,您的变量将包含在该范围内。

So sometimes instead I declare a single line var in the middle of my code to continue my programming and then move it at the top var statement during refactoring afterwards.

这听起来很糟糕。听起来您的代码块非常长,这表明您应该从代码中提取函数。

我还想指出,您的示例中还使用名为 temp 的变量污染了全局命名空间。

考虑常见的 JavaScript 代码库; jQuery 仅公开 jQuery 或 $ 变量。 Lodash/下划线只有_。 Backbone 有“ Backbone ”等。为什么你的申请很特别?只需一个曝光点。

解决您的问题的另一个可能的解决方案是使用模块系统。编译时,代码将被包装在闭包中,根本不暴露给外界。使其模块化也将导致应用程序更加整洁。

关于Javascript,使用一个本地对象而不是许多本地变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30806508/

相关文章:

javascript - 数组数组转 Json

php - 在 linux 中定义可以在 php 中访问的变量

javascript - 通过 findIndex 方法比较 'id'

c# - 使用 C# (Windows 8) 产生问题的静态变量

Javascript 方法以字符串形式返回方法代码

c# - 字符串如何存储在对象数组中?

javascript - 在 Sequelize 中不小心吞下了非空约束(可能是 bluebird 中的错误处理 promise 搞砸了)

javascript - Ajax 提交 nicEdit

javascript - 多次调用实习生异步回调

javascript - 声明变量