Проверка переменных Javascript: (null или undefined) против логического

1

Я хочу проверить объект JS (пример: {x: false, y: true}), если некоторые свойства являются либо логическими, либо если они (null || undefined).

Есть ли простой способ в JS или Underscore, чтобы проверить это, не делая

(obj.x != null || obj.x != undefined)

???

Теги:
underscore.js

5 ответов

1
Лучший ответ

Я нашел простой способ в Underscore:

_.isBoolean(obj.x) 

Благодаря Rajesh я знаю теперь, что obj.x != null возвращает то же самое, если x равно null или undefined.

Я предпочитаю функцию Underscore, потому что она читаема, но нулевое сравнение является родным JS и кажется более эффективным и более простым.

2

Оператор typeof может возвращать, является ли он boolean или что-то еще

Ссылка здесь

2

Вы можете использовать только стандартный оператор typeof, который возвращает 'boolean' если логический.

console.log(typeof undefined === 'boolean'); // false
console.log(typeof null === 'boolean');      // false
console.log(typeof true === 'boolean');      // true
console.log(typeof false === 'boolean');     // true
  • 0
    Это было хорошо, но мне больше всего понравилась функция Underscore. Для нативного JS это было хорошим решением. :-)
0

Попробуйте это Надеюсь, это поможет вам,

JavaScript

function test(v) {
        let type = typeof v;
        if(type === 'undefined') {
            return true;
        }
        if(type=== 'boolean') {
            return false;
        }
        if(v === null) {
            return true;
        }
        if(v === undefined) {
            return true;
        }
        if(v instanceof Array) {
            if(v.length < 1) {
                return true;
            }
        }
        else if(type === 'string') {
            if(v.length < 1) {
                return true;
            }
        }
        else if(type === 'object') {
            if(Object.keys(v).length < 1) {
                return true;
            }
        }
        else if(type === 'number') {
            if(isNaN(v)) {
                return true;
            }
        }
        return false;
    }
  • 0
    Действительно ли нам нужно v === undefined если вы уже проверили (type === 'undefined') ? Также вы можете просто проверить typeof(c) === "object" && Object.keys(v) === 0
  • 0
    Вы также можете обратиться к этому
Показать ещё 1 комментарий
-2

В Javascript undefined оценивается как false, поэтому вы должны быть в состоянии сделать

if (obj.x) {
    // ...
}
  • 0
    obj.x потерпит неудачу для false или 0 или ""

Ещё вопросы

Сообщество Overcoder
Наверх
Меню