Ada*_*cki 0 javascript titanium appcelerator
我正在尝试将javascript二进制标记内联到我的var定义,但我的代码抛出异常"找不到变量:A".有没有办法实现这个目标?
var flag = {
A: 1,
B: 2,
C: 4,
D: 8,
All: A | B | C | D,
};
Run Code Online (Sandbox Code Playgroud)
A当您仍然声明包含的对象时,您无法使用A.
如果要使用这些值,则需要All稍后声明(或初始化)字段,如下所示:
var flag = {
A: 1,
B: 2,
C: 4,
D: 8,
};
flag.All = flag.A | flag.B | flag.C | flag.D;
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用函数作为范围来包含变量,并执行以下操作:
var flag = (function () {
var A = 1, B = 2, C = 4, D = 8;
return {A: A, B: B, C: C, D: D, All: A|B|C|D};
}());
Run Code Online (Sandbox Code Playgroud)
ES6对象速记使这更具吸引力:
var flag = (function () {
var A = 1, B = 2, C = 4, D = 8;
return {A, B, C, D, All: A|B|C|D};
}());
Run Code Online (Sandbox Code Playgroud)
如果All是您的常见模式,则可以生成:
flag.All = Object.keys(flag).reduce(function (p, c) {
return p | flag[c];
}, 0);
Run Code Online (Sandbox Code Playgroud)
使用ES6,您也可以缩短它:
flag.All = Object.keys(flag).reduce((p, c) => (p | flag[c]), 0);
Run Code Online (Sandbox Code Playgroud)
如果您可以使用ES6,请尝试使用此答案来声明枚举.上面创建All值的方法可以使用它,但它提供了更多您可能期望的传统枚举语义(特别是只读).
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |