具有匿名功能的三元运算符

时间:2017-02-22 22:57:16

标签: javascript anonymous-function ternary-operator

我想重写if并切换到另一个三元运算符

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;

1 个答案:

答案 0 :(得分:1)

旁注:如果result为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;