【发布时间】:2015-08-28 15:59:59
【问题描述】:
我经常使用 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”开头。在本地范围内。
任何意见或建议将不胜感激。
【问题讨论】:
-
我不认为有真正的区别,一旦你牢记你的范围。一旦你管理你的范围引用,你不应该污染你的全局命名空间。JS是通过值而不是引用传递的,所以我看不出有什么不同! :(
-
你会更好using closures to maintain scope,让你的代码更具可读性,防止全局范围的污染等等。
-
我的另一个想法是代替命名我的临时对象 temp 我可以将其命名以给出范围的概念并且仍然知道它是链上的本地对象。例如:temp_inner、temp_inner_inner。
-
跳出的一个问题是这段代码是否经过了缩小过程。由于这些变量是对象的属性,它们不会被缩小。不一定是大问题,但如果您的模块/库很大,它可能会增加一些重量。
标签: javascript variables object global-variables local-variables