Jak mogę sprawdzić, czy var jest ciągiem w JavaScript?
Próbowałem tego i to nie działa ...
var a_string = "Hello, I'm a string.";
if (a_string typeof 'string') {
// this is a string
}
javascript
string
variable-types
witam
źródło
źródło
Odpowiedzi:
Byłeś blisko:
Na powiązaną notatkę: powyższe sprawdzenie nie zadziała, jeśli zostanie utworzony ciąg znaków z
new String('hello')
typemObject
zamiast. Istnieją skomplikowane rozwiązania tego problemu, ale lepiej unikać tworzenia ciągów w ten sposób.źródło
if(typeof(str) === typeof(String()))
typeof
Operator nie jest infix (tak LHS Twojego przykład nie ma sensu).Musisz go tak używać ...
Pamiętaj,
typeof
jest operatorem, a nie funkcją. Mimo to będziesztypeof(var)
często używany na wolności. Ma to tyle samo sensu, covar a = 4 + (1)
.Równie dobrze możesz użyć
==
(operator porównania równości), ponieważ oba operandy sąString
s (typeof
zawsze zwraca aString
), JavaScript jest zdefiniowany tak, aby wykonywał te same kroki, których użyłem===
(operator ścisłego porównania).Jak wspomina Box9 , nie wykryje
String
obiektu utworzonego przez instancję .Możesz to wykryć za pomocą ....
jsFiddle .
...lub...
jsFiddle .
Ale to nie zadziała w wielu
window
środowiskach (pomyśliframe
).Możesz to obejść dzięki ...
jsFiddle .
Ale znowu (jak wspomina Box9 ), lepiej jest po prostu użyć
String
formatu dosłownego , npvar str = 'I am a string';
.Dalsza lektura .
źródło
if(myVar.toUpperCase) alert('I am a string');
:? Zobacz: jsfiddle.net/tb3t4nsx{ toUpperCase: '' }
Połączenie poprzednich odpowiedzi zapewnia następujące rozwiązania:
lub
źródło
Poniższe wyrażenie zwraca true :
Poniższe wyrażenie zwraca true :
Poniższe wyrażenie zwraca false (sic!):
Poniższe wyrażenie zwraca true :
Najlepsza i właściwa droga ( imho ):
źródło
Teraz dni, uważam, że lepiej jest użyć funkcji typu typeof (), więc ...
źródło
typeof
, tylko kontrolujesz kolejność operacji za pomocą tych nawiasów. Niektóre osoby mogą uznać ją za bardziej czytelną w pewnych okolicznościach.filename
grupują tylko jedną instrukcję, a zatem są bezużyteczne i obce. Dobrze, że ta odpowiedź ma 0, ponieważ jest błędna, myląca i nieprzydatna; byłoby lepiej, gdyby miał wynik ujemny.sprawdzaj, czy we wszystkich przypadkach jest pusty lub niezdefiniowany a_string
źródło
typeof null
itypeof undefined
nigdy nie wróci'string'
, więctypeof a_string
wystarczy. Przepraszamy za nekropostęMoje osobiste podejście, które wydaje się sprawdzać we wszystkich przypadkach, polega na testowaniu obecności członków, którzy wszyscy będą obecni tylko dla łańcuchów.
Zobacz: http://jsfiddle.net/x75uy0o6/
Chciałbym wiedzieć, czy ta metoda ma wady, ale od lat dobrze mi służy.
źródło