是否可以有条件地在JavaScript中分配值?

时间:2019-01-02 13:14:47

标签: javascript conditional

我希望缩短这段代码。

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

是否可以仅使用一种情况下的变量名来重写它:

const variableName = variableName | 1?

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

|是二进制OR运算符 ||是逻辑或运算符


而且,你不能做

const variableName = variableName || 1;

const variableName = 0;

const variableName = variableName || 1;

因为不能使用const两次声明相同的变量。可能更多:

const variableName = otherVariableName || 1;

我想您想做的是避免将variableName初始化为 (值为0)(我想您不希望{{1} }或false



undefined

答案 2 :(得分:1)

从技术上讲,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'值。

答案 3 :(得分:0)

您可以使用以下语法进行操作:

const variableName = variableName || 1

请记住,这使用了javascript的falsey概念,因此,如果variableName为0,“”,未定义,null或其他一些值,则其评估结果为1。