String.IsNullOrEmpty в JavaScript

Я знаю, что его не одобряют делать что-то вроде написания C # в JavaScript. (см. это , если вы не знаю, что я говорю)

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

String.isNullOrEmpty = function (value) {
    return (!value || value == undefined || value == "" || value.length == 0);
}
28 голосов | спросил Terrance 25 +04002011-10-25T19:01:45+04:00312011bEurope/MoscowTue, 25 Oct 2011 19:01:45 +0400 2011, 19:01:45

5 ответов


53

Начиная с:

return (!value || value == undefined || value == "" || value.length == 0);

Глядя на последнее условие, если значение == "", его длина ДОЛЖНА быть 0. Поэтому снимите ее:

return (!value || value == undefined || value == "");

Но подождите! В JS пустая строка - false. Поэтому drop value == "":

return (!value || value == undefined);

И !undefined - true, поэтому проверка не требуется. Итак, мы имеем:

return (!value);

И нам не нужны круглые скобки:

return !value

Q.E.D.

ответил ndp 31 +04002011-10-31T06:28:36+04:00312011bEurope/MoscowMon, 31 Oct 2011 06:28:36 +0400 2011, 06:28:36
9

Есть только несколько изменений, которые я бы сделал.

Во-первых, always используйте === вместо == в Javascript. Вы можете узнать больше об этом о переполнении стека .

Во-вторых, поскольку undefined изменен , я рекомендовал бы использовать

typeof value === "undefined"

вместо

value === undefined

В-третьих, я бы удалил условия !value и value === "". Они являются избыточными.

Моя версия

Я бы использовал несколько иной подход, чем вы:

String.isNullOrEmpty = function(value) {
  return !(typeof value === "string" && value.length > 0);
}

Это проверяет, является ли тип значения "string" (и, следовательно, не нулевым, а не неопределенным), и если он не пуст. Если это так, это не пусто или пусто.

Обратите внимание, что это возвращает true для нестроковых входов, что может и не быть тем, что вы хотите, если хотите сбросить ошибку для неожиданного типа ввода.

ответил Peter Olson 26 +04002011-10-26T08:38:35+04:00312011bEurope/MoscowWed, 26 Oct 2011 08:38:35 +0400 2011, 08:38:35
2

Вы должны использовать Object.prototype.isNullOrEmpty = function() { alert(this) }. Это связывает его со String-объектом во всех экземплярах. Это начнет давать вам доступ к использованию строк и переменных типа "".isNullOrEmpty или var x = null; x.isNullOrEmpty();

Если вы намерены использовать его как функцию для передачи в переменных: String.isNullOrEmpty();

ответил Ryan Zielke 28 +04002011-10-28T07:54:19+04:00312011bEurope/MoscowFri, 28 Oct 2011 07:54:19 +0400 2011, 07:54:19
2

Ваша функция неожиданно возвращает true для следующих нестрочных значений:

  • false
  • 0
  • Number.NaN
  • [[]] литий>
  • []

Вполне возможно, что !value, хотя он аналогично неаккуратный, будет достаточным, и в этом случае вам вообще не нужно будет определять эту функцию. Но если вы создадите функцию с именем isNullOrEmpty, тогда она должна сделать именно это.

function String.isNullOrEmpty(value) {
    return value == null || value === "";
}

Обратите внимание, что значение value == null является сокращением для значения value === null || value === undefined.

ответил 200_success 26 FebruaryEurope/MoscowbThu, 26 Feb 2015 05:59:16 +0300000000amThu, 26 Feb 2015 05:59:16 +030015 2015, 05:59:16
1

Ryan и seand находятся на месте: это достигает вашего конца.

Object.prototype.isNullOrEmpty = function(value){
    return (!value);
}

Это то, что мне нравится в JavaScript !

ответил stevematdavies 11 ThuEurope/Moscow2014-12-11T10:49:33+03:00Europe/Moscow12bEurope/MoscowThu, 11 Dec 2014 10:49:33 +0300 2014, 10:49:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132