lightalex
@lightalex

Как понять что находится в переменной?

Всем привет!
Нужно узнать что находится в переменной
typeof работает, но не совсем всегда с помощью него получается определить верно что находится в переменной
Например typeof на null и регулярные выражения возвращает тип object
Я вижу два варианта:
1) какой-то другой способ кроме typeof
2) дополнительно проверять на null и регулярные выражения (в таком случае вопрос - а как понять что в переменной регулярное выражение)
Есть идеи?
  • Вопрос задан
  • 293 просмотра
Решения вопроса 2
@lem_prod
почитай про утиную типизацию, https://learn.javascript.ru/class-instanceof

самая простая проверка на null
if (x === null) {};
Ответ написан
Можно попробовать использовать конструктор.
Например,
var patt = new RegExp('hello');

if (patt.constructor === RegExp) {
  // do stuff...
}


Можно использовать и для массивов (которые, как известно, в JS являются объектами и typeof этому подтверждение).
При этом массив можно объявлять не через new, а просто [ ].
Ещё можно проверять через patt instanceof RegExp, но как показывает jsperf этот способ меленее (даже isArray() медленнее для массивов), чем проверка конструктором.

Правда, с null и undefined это не сработает. В этом случае можно объединить и записать:
var patt = new RegExp('hello');

 if (typeof patt === "undefined" || patt === null || patt.constructor === RegExp) {
  // do stuff...
 }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Ложить в переменную только один тип данных
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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