定义JavaScript变量时的最佳实践

时间:2015-04-14 17:28:57

标签: javascript dojo

在设置dojo应用程序时,在引用dom对象时启动变量的建议最佳做法是什么?我发现我通常需要在小部件本身的顶部引用父对象和子对象,并使用以下代码创建全局占位符。

var formItems = ["Item_1", "Item_2", "Item_3", ... "Item_15"];

formItems.forEach(function(formItem) {
    var items = ["frm", "dom", "dijit"];
    items.forEach(function(item) {
        var x = item + formItem;
        window[x] = undefined;
    });
}); 

vs

var frmItem_1, frmItem_2, frmItem_3, ... frmItem_15;
var domItem_1, domItem_2, domItem_3, ... domItem_15;
var dijitItem_1, dijitItem_2, dijitItem_3, ... dijitItem_15;

变量实际上是在解析完所有内容之后在dojo应用程序中填充但是在" save",由于没有定义实际的显式变量,JSHint变得不安。

2 个答案:

答案 0 :(得分:2)

我不喜欢其中任何一种选择。我更喜欢尽可能少的全局变量。我建议初始化一个数组来存储你的项目,然后在你的dojo应用程序中引用该数组。

var formItems = [];
for(var i = 0; i < 15; i++) {
   formItems.push({
       frm: null,
       dom: null,
       dijit: null
   });
}

在你的dojo应用程序中替换:

  • frmItem_NformItems[N].frm
  • domItem_NformItems[N].dom
  • dijitItem_NformItems[N].dijit

如果您可以根据需要将dojo应用程序推送到数组中,您也可以避免预先填充数组。您可以做更多工作使formItems数组非全局,但很难从提供的代码中分辨出来。

答案 1 :(得分:1)

这一切都是主观的,取决于你的项目。您可以配置JSHint以使您满意。

如果你想在不改变任何JSHint配置的情况下满足错误,那么在循环外部初始化变量,然后在里面定义它们。

var formItems = ["Item_1", "Item_2", "Item_3", ... "Item_15"],
    items,
    x;

formItems.forEach(function(formItem) {
    items = ["frm", "dom", "dijit"];
    items.forEach(function(item) {
       x = item + formItem;
       window[x] = undefined;
    });
});