Подтвердить что ты не робот

Самый чистый способ преобразования в логический

У меня есть переменная. Позвольте называть его toto.

Этот toto может быть установлен на undefined, null, строку или объект.

Я хотел бы, чтобы самый чистый способ проверить, установлен ли toto для данных, а это означает, что он задан для строки или объекта, и ни undefined, ни null, и не задает соответствующее логическое значение в другой переменной.

Я подумал о синтаксисе !!, который будет выглядеть так:

var tata = !!toto; // tata would be set to true or false, whatever toto is.

Первый ! будет установлен в false, если toto undefined или null и true else, а второй инвертирует его.

Но это выглядит немного жутко... Так есть ли лучший/более чистый способ сделать это?

Я уже посмотрел этот вопрос, но я хочу установить значение в переменной, а не просто проверить его в инструкции if.

4b9b3361

Ответ 1

Да, вы всегда можете использовать это:

var tata = Boolean(toto);

И вот несколько тестов:

for (var value of [0, 1, -1, "0", "1", "cat", true, false, undefined, null]) {
    console.log(`Boolean(${typeof value} ${value}) is ${Boolean(value)}`);
}

Результаты:

Boolean(number 0) is false
Boolean(number 1) is true
Boolean(number -1) is true
Boolean(string 0) is true
Boolean(string 1) is true
Boolean(string cat) is true
Boolean(boolean true) is true
Boolean(boolean false) is false
Boolean(undefined undefined) is false
Boolean(object null) is false