41

Как проверить, является ли строка пустой/неопределенной/нуль в JavaScript?

15

Существует ли в JavaScript аналог string.Empty, или достаточно просто проверять на ""?

5 ответ(ов)

5

Все предыдущие ответы хорошие, но этот будет даже лучше. Используйте двойные оператор NOT (!!):

if (!!str) {
    // Какой-то код здесь
}

Или используйте приведение типов:

if (Boolean(str)) {
    // Код здесь
}

Обе конструкции выполняют одну и ту же функцию. Здесь вы приводите переменную к типу Boolean, где str — это переменная.

  • Это возвращает false для null, undefined, 0, 000, "", false.
  • Это возвращает true для всех строковых значений, кроме пустой строки (включая строки вроде "0" и " ").
1

Ближайший аналог str.Empty (при условии, что str является строкой) в JavaScript выглядит следующим образом:

if (!str.length) { 
    // Ваш код здесь
}

Этот код проверяет, является ли длина строки равной нулю, что указывает на то, что строка пуста.

1

Если вам нужно убедиться, что строка не состоит только из пустых пробелов (предполагаю, что это для валидации формы), вам нужно заменить пробелы. Вы можете использовать метод replace с регулярным выражением, как показано в примере ниже:

if(str.replace(/\s/g, "") == ""){
    // Строка состоит только из пробелов или пуста
}

В этом коде мы заменяем все пробельные символы на пустую строку. Если результат пустой, значит, оригинальная строка состояла только из пробелов или не содержала символов вовсе.

0

Ваша функция empty проверяет, является ли переданное значение "пустым". В данной реализации вы правильно учли несколько типов значений, которые обычно считаются "пустыми" в JavaScript.

Функция возвращает true для следующих значений:

  • Пустая строка ""
  • Число 0
  • Строка "0"
  • null
  • false
  • undefined

Возвращает false для всех остальных значений.

Вот пример использования вашей функции:

empty(null) // true
empty(0) // true
empty(7) // false
empty("") // true
empty((function() {
    return ""
})) // false

Обратите внимание, что ваша функция возвращает false для вызова, который возвращает пустую строку в контексте функции. Это происходит потому, что сам вызов функции не возвращает просто "", а возвращает результат вызова, что не попадает под ваши условия.

Если вам нужно, чтобы функция также обрабатывала подобные случаи, возможно, стоит рассмотреть дополнительные проверки. Например, можно использовать typeof для того, чтобы определить тип передаваемого значения и соответственно его обработать.

В целом, ваше решение выглядит хорошо для основной проверки на "пустоту". Если у вас есть дополнительные требования, сообщите об этом, чтобы мы могли предложить более точное решение.

0

Очень обобщенная функция "всё-в-одном" (не рекомендуется использовать):

function is_empty(x)
{
    return (                                                           // не ставьте перенос строки после return
        (typeof x == 'undefined')
              ||
        (x == null)
              ||
        (x == false)        // то же самое, что: !x
              ||
        (x.length == 0)
              ||
        (x == 0)            // обратите внимание на эту строку, возможно, она вам не нужна.
              ||
        (x == "")
              ||
        (x.replace(/\s/g,"") == "")
              ||
        (!/[^\s]/.test(x))
              ||
        (/^\s*$/.test(x))
    );
}

Однако, я не рекомендую использовать эту функцию, так как ваша целевая переменная должна быть конкретного типа (например, строка, число или объект). Поэтому применяйте проверки, которые соответствуют этому типу переменной.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь