2
在下面的代码片段,嵌套(状态)?真:虚假陈述在JavaScript
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
}
假设这些都不是 “falsey” 值('FALSE','0',' “”','NaN','null') ,使用级联OR语句的可读性和可维护性更高:'var paintMode = data.regions || data.vpcs ...',在这两种情况下,性能可以忽略不计。 – jbabey
因此'var paintData = data.regions || data.vpcs ...'嗯,它是一个选项。如果我调整我的程序逻辑的其余部分,我可以摆脱这一点。 – Rayraegah
它是一个网络层次结构,虚拟机,防火墙和存储'里面'集群'里面'子网'里面'区'里面'虚拟私有云'里面'地区。与AWS有关。 树的最后一个节点可以是空的。 – Rayraegah