在一些地方,我有一组预先定义的值。
我目前的代码是:
for (var period in {'today':true,'yesterday':true,'this week':true,'last week':true,'this month':true,'last month':true}) {
...
}
它有效,但有更好的方法吗?
(period
需要是值,而不是索引,否则我会使用数组。)
答案 0 :(得分:2)
是的,假设您不必担心旧的Javascript引擎(如IE< = 8):
['today','yesterday','this week','last week',
'this month','last month'].forEach(function(period) {
...
})
答案 1 :(得分:1)
在ES6中这样做的一种方法是:
for (var period of ['today', 'yesterday', 'this week', 'last week', 'this month', 'last month']) {
// ...
}
这在firefox中受支持。如果你的引擎不支持它,那么使用ES6转换器,否则你需要回退到旧的解决方案。
答案 2 :(得分:1)
我会这样做:
var timePeriod = [ "today"
, "yesterday"
, "this week"
, "last week"
, "this month"
, "last month"
];
for (var i in timePeriod) {
with ({ period: timePeriod[i] }) {
...
}
}
与@ MarkReed的解决方案相比,这有两个优点:
此外,使用with
语句可以防止臭名昭着的循环clousure问题。