定义 JavaScript 变量时的最佳做法
Best practices when defining JavaScript variables
设置 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;
});
});
对比
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 由于没有定义实际的显式变量而变得混乱。
这都是主观的,取决于您的项目。可以配置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;
});
});
我不太喜欢这两个选项。我更喜欢尽可能少的全局变量。我建议初始化一个数组来存储您的项目,然后在您的 dojo 应用程序中引用该数组。
var formItems = [];
for(var i = 0; i < 15; i++) {
formItems.push({
frm: null,
dom: null,
dijit: null
});
}
并在您的 dojo 应用程序中替换:
frmItem_<em>N</em>
与 formItems[<em>N</em>].frm
domItem_<em>N</em>
与 formItems[<em>N</em>].dom
dijitItem_<em>N</em>
与 formItems[<em>N</em>].dijit
如果您可以让您的 dojo 应用程序根据需要将项目推送到数组中,您也可以避免预填充数组。您可以做更多的工作来使 formItems
数组成为非全局数组,但仅从提供的代码中很难判断。
设置 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;
});
});
对比
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 由于没有定义实际的显式变量而变得混乱。
这都是主观的,取决于您的项目。可以配置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;
});
});
我不太喜欢这两个选项。我更喜欢尽可能少的全局变量。我建议初始化一个数组来存储您的项目,然后在您的 dojo 应用程序中引用该数组。
var formItems = [];
for(var i = 0; i < 15; i++) {
formItems.push({
frm: null,
dom: null,
dijit: null
});
}
并在您的 dojo 应用程序中替换:
frmItem_<em>N</em>
与formItems[<em>N</em>].frm
domItem_<em>N</em>
与formItems[<em>N</em>].dom
dijitItem_<em>N</em>
与formItems[<em>N</em>].dijit
如果您可以让您的 dojo 应用程序根据需要将项目推送到数组中,您也可以避免预填充数组。您可以做更多的工作来使 formItems
数组成为非全局数组,但仅从提供的代码中很难判断。