在设置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变得不安。
答案 0 :(得分:2)
我不喜欢其中任何一种选择。我更喜欢尽可能少的全局变量。我建议初始化一个数组来存储你的项目,然后在你的dojo应用程序中引用该数组。
var formItems = [];
for(var i = 0; i < 15; i++) {
formItems.push({
frm: null,
dom: null,
dijit: null
});
}
在你的dojo应用程序中替换:
frmItem_N
与formItems[N].frm
domItem_N
与formItems[N].dom
dijitItem_N
与formItems[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;
});
});