是否可以在 Javascript 中有条件地赋值?

Is it possible to conditionally assign a value in Javascript?

我希望缩短这行代码。

const variableName = variableName === 0 ? 1 : variableName;

是否可以像这样只用一种情况重写它:

const variableName = variableName | 1?

您可以使用以下语法来完成:

const variableName = variableName || 1

请记住,这使用了 javascript 的错误概念,因此如果 variableName 为 0、""、undefined、null 或其他一些值,这将计算为 1。

const variableName = (variableName === 0 && 1) || variableName;

| 是二元或运算符 || 是逻辑或运算符


另外,你不能

const variableName = variableName || 1;

const variableName = 0;

const variableName = variableName || 1;

因为您不能使用 const 对同一个变量声明两次。更应该是:

const variableName = otherVariableName || 1;

我猜你想做的是避免 variableName 初始化 0 值(我猜你也不想要 falseundefined)。



const otherVariableName = 0;

const variableName = otherVariableName || 1;

console.log(variableName);

从技术上讲,const variableName = variableName | 1 是无效的,因为您不能重新声明已经声明的 variableName(并且在严格模式下,您不能引用它,不知道它是否有'当前范围内未声明)。

一个经常出现的模式是

function test(variableName) {
  variableName = variableName | 1;
  // do something with variableName
}

或者

//not supported in IE, but might be useful if code is passed through a build step,
//or IE support is not important.
function default(variableName = 1) {
  // do something with variableName
}

function constVersion(variableName) {
  const constName = variableName | 1;
  //do something with constName
}

请注意同等对待 variableName 的所有 'false-y' 值。