Можно ли условно присвоить значение в Javascript?

Я хочу сократить эту строку кода.

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

Можно ли его переписать только с одним регистром имени переменной так:

const variableName = variableName | 1?

Этот или обычный if так же хороши, как и получается, если только variableName изначально не является ложным, и в этом случае вы можете использовать variableName = variableName || 1. Это не так обычно применимо, поскольку требует, чтобы исходное значение variableName было ложным.

Carcigenicate 02.01.2019 14:16

Вы действительно хотите инвертировать логическое…? foo = !foo

deceze 02.01.2019 14:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
62
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете сделать это с помощью следующего синтаксиса:

const variableName = variableName || 1

Имейте в виду, что здесь используется понятие ложности в javascript, поэтому, если variableName равно 0, "", undefined, null или некоторым другим значениям, это будет оцениваться как 1.

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

Похоже, цель заключалась в том, чтобы сокращать эта строка кода

barbsan 02.01.2019 15:41

| - это бинарный оператор ИЛИ || - это логический оператор ИЛИ


Кроме того, вы не можете

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 одинаково.

Другие вопросы по теме