В Java, вы можете использовать instanceOf
или getClass()
на переменную , чтобы узнать его тип.
Как узнать тип переменной в JavaScript, который не является строго типизированным?
Например, как мне узнать, bar
является ли это Boolean
или или Number
, или String
?
function foo(bar) {
// what do I do here?
}
javascript
Том Такер
источник
источник
Ответы:
Используйте
typeof
:Так что вы можете сделать:
Будьте осторожны, если вы определяете эти примитивы с помощью их обёрток объектов (что никогда не следует делать, используйте литералы там, где это возможно):
Тип массива по-прежнему
object
. Здесь вам действительно нуженinstanceof
оператор.Обновить:
Другой интересный способ - проверить вывод
Object.prototype.toString
:При этом вам не нужно будет различать примитивные значения и объекты.
источник
typeof хорош только для возврата «примитивных» типов, таких как число, логическое значение, объект, строка и символы. Вы также можете использовать
instanceof
для проверки, если объект имеет определенный тип.источник
Использование
type
:источник
Number(1), Boolean(true)...
. Единственные проблемы - когда вы используетеnew
и создаете в штучной упаковке объект, использование их в качестве функций может быть действительно полезным для преобразования из других типов.Boolean(0) === false, Number(true) === 1
null
?typeof null
является 'объект'В Javascript вы можете сделать это с помощью функции typeof
источник
Чтобы быть немного более точным, чем ECMAScript-5.1, чем другие ответы (некоторые могут сказать, педантичный):
В JavaScript переменные (и свойства) не имеют типов: значения имеют. Кроме того, существует только 6 типов значений: Undefined, Null, Boolean, String, Number и Object. (Технически, есть также 7 «типов спецификации», но вы не можете хранить значения этих типов как свойства объектов или значения переменных - они используются только внутри самой спецификации, чтобы определить, как работает язык. Значения Вы можете явно манипулировать только из 6 типов, которые я перечислил.)
Спецификация использует обозначение «Тип (x)», когда хочет говорить о «типе х». Это только обозначение, используемое в спецификации: это не особенность языка.
Как ясно из других ответов, на практике вы, возможно, захотите знать больше, чем тип значения, особенно когда типом является Object. Независимо от этого, и для полноты, вот простая реализация JavaScript Type (x), как это используется в спецификации:
источник
Я нахожу это расстраивающим, что
typeof
так ограничено. Вот улучшенная версия:образец теста:
источник
Для встроенных типов JS вы можете использовать:
Здесь мы используем метод 'toString' из класса 'Object', который работает не так, как тот же метод других типов.
Примеры:
Если вам нужно имя класса, вы можете использовать:
Примеры:
Но эта функция была добавлена в ES2015 .
источник
Вот полное решение.
Для экспортируемого модуля CommonJs или модуля RequireJS ....
Теперь вы можете импортировать этот код Sys в файл Sys.js. тогда вы можете использовать эту функцию объекта Sys, чтобы узнать тип объектов JavaScript
Вы также можете проверить, определен ли объект, или тип является функцией, или объект пуст ... и т. д.
Например
источник
В JavaScript все является объектом
Чтобы получить реальный тип, используйте этот
Надеюсь это поможет
источник