Как я могу проверить нулевые значения в JavaScript? Я написал код ниже, но он не работал.
if (pass == null || cpass == null || email == null || cemail == null || user == null) {
alert("fill all columns");
return false;
}
И как я могу найти ошибки в моих программах JavaScript?
javascript
null
compare
Mahdi_Nine
источник
источник
null
в js должно быть сделано со строгим оператором===
Ответы:
Javascript очень гибок в отношении проверки «нулевых» значений. Я предполагаю, что вы на самом деле ищете пустые строки, и в этом случае этот более простой код будет работать:
Что будет проверять пустые строки (
""
),null
,undefined
,false
и номера0
иNaN
Пожалуйста, обратите внимание, что если вы специально проверяете числа, это обычная ошибка, которую вы пропускаете
0
с помощью этого метода, иnum !== 0
она предпочтительна (num !== -1
или~num
(хакерский код, который также проверяет-1
)) для функций, которые возвращают-1
, напримерindexOf
)источник
!
или!!
для проверкиnull
илиundefined
для типично числовых данных, если вы не хотите выбрасывать значения 0.0
...». Я считаю, что этот ответ идеально подходит для вопроса, так как, учитывая контекст (который я понимаю, это «имя пользователя, пароль, электронная почта»), они не проверяют0
значения. Однако, учитывая популярность этого вопроса и ответа, я согласен, что стоит упомянуть в самом ответе.Чтобы проверить на ноль, в частности, вы бы использовали это:
Этот тест будет только прослыть
null
и не прослыть""
,undefined
,false
,0
, илиNaN
.Кроме того, я предоставил абсолютные проверки для каждого «ложноподобного» значения (для которого возвращалось бы значение true
!variable
).Обратите внимание, что для некоторых абсолютных проверок вам необходимо реализовать использование
absolutely equals: ===
иtypeof
.Я создал JSFiddle здесь, чтобы показать все отдельные тесты, работающие
Вот результат каждой проверки:
Как видите, проверить немного сложнее
NaN
;источник
===
строгое равенство? Спасибо. Также для теста NaN вы можете использоватьisNaN(value)
этот метод, который будет возвращатьtrue
только если переменная равна NaN.variable === null
он не относится к типу "объект"? Если нет, то почему бы не упростить проверкуvariable === null
, выбрасывая второй конъюнкт? Спасибо.variable === null
которые я только что протестировал здесь, в этом JSFiddle . Я также использовал `&& typeof variable === 'object'` не только для того, чтобы проиллюстрировать интересный факт, чтоnull
значение является typeofobject
, но и для того, чтобы придерживаться последовательности других проверок. Но да, в заключение, вы можете безопасно использовать простоvariable === null
.просто заменить
==
с===
во всех местах.==
это свободное или абстрактное сравнение равенства===
это строгое сравнение равенстваСм. Статью MDN о сравнениях и сходстве равенства для более подробной информации.
источник
undefined
что нетnull
. В противном случае это приведет к неожиданному поведению. Обычно, если вас интересуют обаnull
/undefined
но не ложные значения, используйте==
(один из немногих случаев, когда вы должны это сделать).undefined
не являетсяnull
: stackoverflow.com/a/5076962/753237Оператор строгого равенства: -
Мы можем проверить ноль,
===
Просто с помощью
if
будет иметь значение true, если значение не равно :
источник
Улучшение по сравнению с принятым ответом путем явной проверки,
null
но с упрощенным синтаксисом:источник
Во-первых, у вас есть оператор возврата без тела функции. Скорее всего, это приведет к ошибке.
Более чистый способ сделать чек - просто использовать! оператор:
источник
вы можете использовать попробовать поймать, наконец,
Вы можете также
throw
свои собственные ошибки. Смотрите это .источник
В JavaScript ни одна строка не равна
null
.Возможно, вы ожидали,
pass == null
что будет true, когдаpass
пустая строка, потому что вы знаете, что оператор свободного равенства==
выполняет определенные виды приведения типов.Например, это выражение верно:
Напротив, оператор строгого равенства
===
говорит, что это неверно:Учитывая, что
''
и0
они слабо равны, вы можете разумно предположить, что''
иnull
они слабо равны. Однако это не так.Это выражение ложно:
Результатом сравнения любой строки
null
является false. Поэтомуpass == null
и все остальные ваши тесты всегда ложны, и пользователь никогда не получит оповещение.Чтобы исправить ваш код, сравните каждое значение с пустой строкой:
Если вы уверены, что
pass
это строка,pass == ''
она также будет работать, потому что только пустая строка свободно равна пустой строке. С другой стороны, некоторые эксперты говорят, что это хорошая практика - всегда использовать строгое равенство в JavaScript, если вы специально не хотите выполнять приведение типов, которое выполняет оператор свободного равенства.Если вы хотите узнать, какие пары значений слабо равны, обратитесь к таблице «Сравнения одинаковости» в статье Mozilla на эту тему .
источник
чтобы проверить наличие неопределенных и нулевых значений в javascript, вам нужно просто написать следующее:
источник
Это комментарий к решению WebWanderer о проверке NaN (у меня пока недостаточно представителей, чтобы оставить официальный комментарий). Решение читается как
но это не удастся для рациональных чисел, которые округляются до
0
, напримерvariable = 0.1
. Лучшим тестом будет:источник
parseInt
наparseFloat
(что должно было быть для меня очевидно в первую очередь). Я избегал использования этойisNan
функции, потому что мне кажется, что многие разработчики рассматривают такие функции, какisNaN
своего рода «магический ящик», в который входят значения и булевы значения, и я хотел бы провести тестирование немного глубже. Но да, ваш предложенный тест будет работать и отлично подходит для использования. Извините, я не заметил ваш пост до сих пор.isNaN
, я могу понять эту логику. Есть также метод Underscore.js, который кажется еще более запутанным / черный ящик, но все равно стоит отметить, потому что он использует преимуществаNaN !== NaN
.Object.prototype.toString.call(variable) === '[object Number]' && variable !== +variable
На самом деле я думаю, что вам может понадобиться использовать,
if (value !== null || value !== undefined)
потому что если вы используете,if (value)
вы также можете фильтровать 0 или ложные значения.Рассмотрим эти две функции:
В моей ситуации мне просто нужно было проверить, является ли значение нулевым и неопределенным, и я не хотел фильтровать
0
илиfalse
или''
значения. поэтому я использовал второй тест, но вам может понадобиться отфильтровать их, что может привести к использованию первого теста.источник
Я нашел другой способ проверить, если значение равно нулю:
null
действует какnumber
иobject
одновременно. Сравнениеnull >= 0
илиnull <= 0
результаты вtrue
. Сравнениеnull === 0
илиnull > 0
илиnull < 0
приведет к ложному. Но, какnull
и объект, мы можем обнаружить его как ноль.Я сделал более сложную функцию. Nature of witch будет работать лучше, чем typeof, и мне скажут, какие типы включать или сохранять сгруппированными.
источник
Я сделал эту очень простую функцию, которая творит чудеса:
Маршрут - это любая цепочка ценностей, которая может взорваться. Я использую его для JQuery / Cheerio и объектов и тому подобное.
Примеры 1: простой объект, такой как этот
const testObj = {items: [{ val: 'haya' }, { val: null }, { val: 'hum!' }];};
.Но это может быть очень большой объект, который мы даже не сделали. Так что я передаю это через:
Конечно, если вы предпочитаете, вы можете использовать
null
или'No value'
... все, что соответствует вашим потребностям.Обычно запрос DOM или селектор jQuery могут выдать ошибку, если она не найдена. Но используя что-то вроде:
источник
Вы можете использовать модуль lodash, чтобы проверить, является ли значение пустым или неопределенным
Ссылочная ссылка: https://lodash.com/docs/#isNil
источник
Это не будет работать в случае логических значений, поступающих из БД для ex:
источник
AFAIK в JAVASCRIPT, когда переменная объявлена, но ей не присвоено значение, ее тип -
undefined
. поэтому мы можем проверить переменную, даже если она будет содержатьobject
некоторый экземпляр вместо значения .создайте вспомогательный метод для проверки возвращаемого значения null
true
и используйте его в своем API.вспомогательная функция для проверки, если переменная пуста:
попробуй поймать исключительный вызов API:
некоторые тестовые случаи:
источник
isEmpty
функция ведет себя так же, как!
. Не нужно придумывать функцию. Просто делайif (!pass || !cpass || !email ...)
. (Который уже показан в принятом ответе.) Как следует из комментария WebWanderer, средняя часть этого поста, «попробуй поймать исключительный вызов API», не имеет отношения к этому вопросу. Пожалуйста, объясните свое намерение - когда это полезно? Как это связано с вопросом?Проверка условий ошибки:
источник
Попробуй это:
источник
if (variable === null)
? Также кто-то уже предоставил этот ответ в прошлом году: stackoverflow.com/a/27550756/218196 .