JavaScript проверяет, является ли значение только undefined, null или false - программирование

JavaScript проверяет, является ли значение только undefined, null или false

Помимо создания функции, существует ли более короткий способ проверить, есть ли значение undefined, null или false только в JavaScript?

Нижеприведенный оператор if эквивалентен if(val===null && val===undefined val===false) Код работает отлично, я ищу более короткий эквивалент.

if(val==null || val===false){
  ;
}

Выше val==null оценивается как true, когда val=undefined или val=null.

Я думал, может быть, с помощью побитовых операторов или какой-то другой обман.

4b9b3361

Ответ 1

Ну, вы всегда можете "сдаться":)

function b(val){
    return (val==null || val===false);
}

Ответ 2

Лучший способ сделать это я считаю:

if(val != true){
//do something
} 

Это будет true, если val является ложным, NaN или undefined.

Ответ 3

Я думаю, что вы ищете !!val==false, который можно повернуть на !val (еще короче):

Вы видите:

function checkValue(value) {
    console.log(!!value);
}

checkValue(); // false
checkValue(null); // false
checkValue(undefined); // false
checkValue(false); // false
checkValue(""); // false

checkValue(true); // true
checkValue({}); // true
checkValue("any string"); // true

Это работает, перевернув значение с помощью оператора !.

Если вы перевернули null один раз, например, так:

console.log(!null) // that would output --> true

Если вы дважды переверните его так:

console.log(!!null) // that would output --> false

То же самое с undefined или false.

Ваш код:

if(val==null || val===false){
  ;
}

затем станет:

if(!val) {
  ;
}

Это будет работать для всех случаев, даже если есть строка, но длина равна нулю. Теперь, если вы хотите, чтобы он также работал на число 0 (которое стало бы false, если оно было двойным щелчком), тогда ваш if станет:

if(!val && val !== 0) {
  // code runs only when val == null, undefined, false, or empty string ""
}

Ответ 4

Один из способов сделать это:

var acceptable = {"undefined": 1, "boolean": 1, "object": 1};

if(!val && acceptable[typeof val]){
  // ...
}

Я думаю, что это минимизирует количество операций, учитывая, что ваши ограничения быстро проверяют.

Ответ 5

Другое решение:

На основе документа объект Boolean вернет true, если значение не равно 0, undefined, null и т.д. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean

Если значение опущено или равно 0, -0, null, false, NaN, undefined или пустая строка (""), объект имеет начальное значение false.

Итак,

if(Boolean(val))
{
//executable...
}

Ответ 6

только ярлык для чего-то подобного, о котором я знаю,

var val;
(val==null || val===false) ? false: true;

Ответ 7

Boolean (val) === false. Это помогло мне проверить, ложно ли значение.

Ответ 8

Использование? намного чище.

var ? function_if_exists() : function_if_doesnt_exist();

Ответ 9

Попробуйте как ниже

var Boolify = require('node-boolify').Boolify;
if (!Boolify(val)) {
    //your instruction
}

См. node-boolify