2017-02-22 22 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, вы получите исключение при попытке получить атрибут длины 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;