2017-02-22 108 views
1

三元操作我想,如果在另一三元运算与匿名函数

var result = fieldValue ? fieldValue.split("/") : null; 
    var res = null; 
    if(result.length > 0) { 
     switch (label.toLowerCase()) { 
      case "jenkins job name" : 
       res = result[result.length - 2]; 
       break; 
      case "jenkins job number" : 
       res = result[result.length - 3]; 
       break; 
     } 

我想为低于其不工作开关重新写,我究竟做错了

result = fieldValue ? fieldValue.split("/") : null; 
    var res = result.length > 0 ?() => { 
     switch (label.toLowerCase()) { 
      case "jenkins job name" : 
       return result[result.length - 2]; 
      case "jenkins job number" : 
      return result[result.length - 3]; 
     }  
    } : null; 
+0

有什么错误? – cjds

+0

这看起来像是滥用三元运算符来使事情难以阅读,但无论如何。使用一个IIFE,比如'(function(){switch ...})()'。 –

+0

您并未调用该函数,因此'res'将被分配一个函数或'null'。 –

回答

1

边注意:如果结果为空,当尝试获取null的长度属性时会考虑更改为fieldValue ? fieldValue.split("/") : ""

为了让两个代码具有相同的结果,你应该这样调用该函数anonimous:

var res = result.length > 0 ? (() => { 
    switch (label.toLowerCase()) { 
     case "jenkins job name" : 
      return result[result.length - 2]; 
     case "jenkins job number" : 
     return result[result.length - 3]; 
    }  
})() : null;