在以下代码片段中,
var paintMode = data.hasOwnProperty('regions') ?
'regions' : data.hasOwnProperty('vpcs') ?
'vpcs' : data.hasOwnProperty('zones') ?
'zones' : data.hasOwnProperty('subnets') ?
'subnets' : data.hasOwnProperty('clusters') ? 'clusters' : null;
我使用了深度嵌套(condition) ? true : false
——这可以接受吗?优化了吗?如果它不好,还有其他选择吗?
它在执行一些 SVG 操作的递归函数中使用,如果您好奇,这里是函数片段。
function paintGroups(data) {
var paintMode = data.hasOwnProperty('regions') ? 'regions' : data.hasOwnProperty('vpcs') ? 'vpcs' : data.hasOwnProperty('zones') ? 'zones' : data.hasOwnProperty('subnets') ? 'subnets' : data.hasOwnProperty('clusters') ? 'clusters' : null,
depth = data[paintMode].length,
i,
Shape; //= raphealObj.rect();
// Register stacking order
// Paint a shape with styles based on paintMode
// Store its id & Label for other ops.
if(paintMode) {
for(i = 0; i < depth; i++) {
paintGroups(data[paintMode][i]);
}
}
// to reverse the order of paint - place your statements here
}