如果使用相同的数据,是否在JavaScript中声明多个变量?
我看到过这样的帖子,关注的是唯一变量(还有很多),但我关注的是很多非唯一变量,例如,我想做一个更大的版本如果使用相同的数据,是否在JavaScript中声明多个变量?,javascript,jquery,Javascript,Jquery,我看到过这样的帖子,关注的是唯一变量(还有很多),但我关注的是很多非唯一变量,例如,我想做一个更大的版本 var rep; var state_def, state_MA, state_WY, state_TN = 'joeblow'; var state_AZ, state_TX = 'moefoe'; var state_MT, state_OR = 'growmo'; v
var rep;
var state_def, state_MA, state_WY, state_TN = 'joeblow';
var state_AZ, state_TX = 'moefoe';
var state_MT, state_OR = 'growmo';
var state_OK, state_LA = 'billyjoe';
var state_WA, state_NM, state_MS = 'messytess';
var state_VA, state_NY = 'slickrick';
var state_CA = 'icecube';
//or
var state_def = state_MA = state_WY = state_TN = 'joeblow';
我只是想知道,我用的是这样的开关
switch (capitalise(data.regionName)) {
case 'Arizona': rep = state_AZ; break;
case 'Texas': rep = state_TX; break;
case 'Montana': rep = state_MT; break;
case 'Oregon': rep = state_OR; break;
case 'New Mexico': rep = state_NM; break;
case 'Mississippi': rep = state_MS; break;
case 'Oklahoma': rep = state_OK; break;
case 'Louisiana': rep = state_LA; break;
case 'Washington': rep = state_WA; break;
case 'Massachusetts': rep = state_MA; break;
case 'Wyoming': rep = state_WY; break;
case 'Tennessee': rep = state_TN; break;
case 'Virginia': rep = state_VA; break;
case 'Illinois': rep = state_IL; break;
case 'Nevada': rep = state_NV; break;
default: rep = state_def; break;
};
这也将有几千个Zipcode,因此需要一个辅助开关。这就是为什么需要尽可能短地声明state(或zip)变量/用户关联。但我也不想落入任何我可能不知道的陷阱。除了
default:rep=state_def;中断代码>返回为未定义。另外,在IE8中不起作用。我建议用映射替换您的开关
:
var reps = {
'Arizona': state_AZ,
'Texas': state_TX,
// etc.
};
// then you can do this:
var rep = reps[capitalize(data.regionName)];
稍后,您甚至可以将该映射(包括值)作为JSON对象或其他内容从服务器或其他数据源下载
还要注意的是,大多数状态变量都是未定义的。我不知道这是否是你想要的。如果您只有一些州的数据,那么最好直接构建数据结构:
var reps = {
'Arizona': undefined, // or just omit from mapping
'Texas': 'moefoe',
// etc.
};
并省去所有的状态变量。我建议用映射替换开关
:
var reps = {
'Arizona': state_AZ,
'Texas': state_TX,
// etc.
};
// then you can do this:
var rep = reps[capitalize(data.regionName)];
稍后,您甚至可以将该映射(包括值)作为JSON对象或其他内容从服务器或其他数据源下载
还要注意的是,大多数状态变量都是未定义的。我不知道这是否是你想要的。如果您只有一些州的数据,那么最好直接构建数据结构:
var reps = {
'Arizona': undefined, // or just omit from mapping
'Texas': 'moefoe',
// etc.
};
并且省去所有的state.*
变量。;未分配state_def、state_MA和state_WY(=未定义)。执行此操作时,只有state_TN等于'joeblow',变量state_def,state_MA,state_WY,state_TN='joeblow';未分配state_def、state_MA和state_WY(=未定义)。仅说明“joeblow”是的,这些都不起作用,以及为什么我需要一个更好的解决方案,比如你的;-)我现在就写出来,然后运行一个测试。+1所有那些state\uuu
变量也可以被分类到一个对象中。我建议它的目的是var state\u OK=state\u LA='billyjoe'
,因为原始版本仅使用单个对象变量state
而不是许多state.*
变量初始化最后一个变量,可以通过以下方式实现:var state={};州['OK']=州['LA']='billyjoe';州['CA']='icecube'
@Shane-如果用户/url数据需要更改,那么两级映射可能会起作用。例如,如果state_AZ
和state_TX
始终假定具有相同的用户/url,则情况尤其如此。因此,来自'Arizona'
和'Texas'
的映射都将映射到'AZ_和_TX'
(例如),然后您将在第二个映射对象中查找值'Moefee'
。是的,这些都不起作用,因此我需要一个更好的解决方案,就像您的;-)我现在就写出来,然后运行一个测试。+1所有那些state\uuu
变量也可以被分类到一个对象中。我建议它的目的是var state\u OK=state\u LA='billyjoe'
,因为原始版本仅使用单个对象变量state
而不是许多state.*
变量初始化最后一个变量,可以通过以下方式实现:var state={};州['OK']=州['LA']='billyjoe';州['CA']='icecube'
@Shane-如果用户/url数据需要更改,那么两级映射可能会起作用。例如,如果state_AZ
和state_TX
始终假定具有相同的用户/url,则情况尤其如此。因此,来自'Arizona'
和'Texas'
的映射都将映射到'AZ_和_TX'
(例如),然后您将在第二个映射对象中查找值'Moefee'
。