Я хочу сократить эту строку кода.
const variableName = variableName === 0 ? 1 : variableName;
Можно ли его переписать только с одним регистром имени переменной так:
const variableName = variableName | 1?
Вы действительно хотите инвертировать логическое…? foo = !foo



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать это с помощью следующего синтаксиса:
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 (я думаю, вам тоже не нужны false или undefined).
const otherVariableName = 0;
const variableName = otherVariableName || 1;
console.info(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
}
Просто помните, что нужно относиться ко всем «ложным-y» значениям variableName одинаково.
Этот или обычный
ifтак же хороши, как и получается, если толькоvariableNameизначально не является ложным, и в этом случае вы можете использоватьvariableName = variableName || 1. Это не так обычно применимо, поскольку требует, чтобы исходное значениеvariableNameбыло ложным.