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

Can i write this condition in better way?

我需要检查变量是否有某个值或 null 然后使用变量值,否则采用默认值。我已经使用了以下条件,我怎样才能更好地写它?

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

如果更好你的意思是更具可读性,你的情况是这样的:

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

您可以使用条件语句对 returning val 进行两次检查,否则 return defaultVal.

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

如果你想坚持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
);

试试这个:

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);