我可以用更好的方式写这个条件吗?

时间:2018-07-30 09:19:03

标签: javascript conditional

我需要检查变量是否具有某些值或为null,然后使用变量值,否则采用默认值。我在以下条件下使用过,如何更好地编写它?

const newVal = val === null ? null : val || defaultVal;

4 个答案:

答案 0 :(得分:3)

如果更好是您说更具可读性,那么这就是您的情况的表现:

if (val) {
  return val;
} else if (val === null) {
  return null;
} else {
  return defaultVal;
}

答案 1 :(得分:2)

您可以使用带有两个检查的条件语句来返回val,否则返回defaultVal

var val = null,
    defaultVal = 'foo',
    newVal = val || val === null ? val : defaultVal;
    
console.log(newVal);

答案 2 :(得分:1)

如果您想坚持使用ternary,则可以这样写:val || val === null ? val : defaultValue

const getVal = (val, defaultValue = 0) => val || val === null ? val : defaultValue;

const val1 = null;
const val2 = 2599;
const val3 = undefined;
const val4 = 0;

console.log(
  getVal(val1),    // null
  getVal(val2),    // 2599
  getVal(val3, 5), // 5
  getVal(val4)     // 0
);

答案 3 :(得分:0)

尝试一下:

const newVal = (function(v, defValue){return v||(v===null?null:defValue)})("desiredValue", "defValue");

在您的示例中:

const newVal = (function(v, dfV){return v||(v===null?null:dfV)})(val, defaultVal);

您可以删除该功能并单独使用该条件:

 const newVal = val||(val===null?null:defaultVal);