Как я могу проверить, является ли var строкой в JavaScript?
Я пробовал это, и это не работает ...
var a_string = "Hello, I'm a string.";
if (a_string typeof 'string') {
// this is a string
}
Как я могу проверить, является ли var строкой в JavaScript?
Я пробовал это, и это не работает ...
var a_string = "Hello, I'm a string.";
if (a_string typeof 'string') {
// this is a string
}
Ответы:
Вы были близки
В связи с этим: вышеуказанная проверка не сработает, если будет создана строка с
new String('hello')
типомObject
. Есть сложные решения, чтобы обойти это, но лучше просто избегать создания строк таким образом.источник
if(typeof(str) === typeof(String()))
typeof
Оператор не инфиксный (так LHS вашего примера не имеет смысла).Вы должны использовать это так ...
Помните,
typeof
это оператор, а не функция. Несмотря на это, вы увидите,typeof(var)
что вас часто используют в дикой природе. Это имеет такой же смысл, какvar a = 4 + (1)
.Кроме того, вы также можете использовать
==
(оператор сравнения на равенство), поскольку оба операнда являютсяString
s (typeof
всегда возвращает aString
), JavaScript определен для выполнения тех же шагов, которые я использовал===
(оператор строгого сравнения).Как упоминает Box9 , это не обнаружит экземпляр
String
объекта.Вы можете обнаружить это с ....
jsFiddle .
...или...
jsFiddle .
Но это не будет работать в мульти-
window
среде (думаю,iframe
с).Вы можете обойти это с ...
jsFiddle .
Но опять же (как упоминает Box9 ), вам лучше использовать буквальный
String
формат, напримерvar str = 'I am a string';
.Дальнейшее чтение .
источник
if(myVar.toUpperCase) alert('I am a string');
? См: jsfiddle.net/tb3t4nsx{ toUpperCase: '' }
Объединение предыдущих ответов дает следующие решения:
или
источник
Следующее выражение возвращает true :
Следующее выражение возвращает true :
Следующее выражение возвращает false (sic!):
Следующее выражение возвращает true :
Лучший и правильный путь ( имхо ):
источник
Сейчас я считаю, что предпочтительнее использовать функциональную форму typeof (), так что ...
источник
typeof
, вы просто контролируете порядок операций с этими скобками. Некоторые люди могут найти его более читабельным при определенных обстоятельствах.filename
только группируют одно утверждение, и поэтому являются бесполезными и посторонними. Хорошо, что этот ответ имеет оценку 0, потому что он неправильный, вводящий в заблуждение и бесполезный; было бы лучше, если бы у него был отрицательный счет.проверка на ноль или неопределенность во всех случаях a_string
источник
typeof null
иtypeof undefined
никогда не вернется'string'
, такtypeof a_string
что достаточно. Извините за некропостингМой личный подход, который, кажется, работает во всех случаях, - это тестирование на присутствие членов, которые будут присутствовать только для строк.
Смотрите: http://jsfiddle.net/x75uy0o6/
Я хотел бы знать, есть ли у этого метода недостатки, но он годился для меня хорошо.
источник