Wie kann ich überprüfen, ob eine Variable eine Zeichenfolge in JavaScript ist?
Ich habe es versucht und es funktioniert nicht ...
var a_string = "Hello, I'm a string.";
if (a_string typeof 'string') {
// this is a string
}
javascript
string
variable-types
vitto
quelle
quelle
Antworten:
Du warst nah:
In einem verwandten Hinweis: Die obige Prüfung funktioniert nicht, wenn stattdessen eine Zeichenfolge mit
new String('hello')
dem Typ erstellt wirdObject
. Es gibt komplizierte Lösungen, um dies zu umgehen, aber es ist besser, niemals zu vermeiden, dass auf diese Weise Zeichenfolgen erstellt werden.quelle
if(typeof(str) === typeof(String()))
Das
typeof
Operator ist kein Infix (daher macht die LHS Ihres Beispiels keinen Sinn).Sie müssen es so verwenden ...
Denken Sie daran,
typeof
ist ein Operator, keine Funktion. Trotzdem werden Sie sehen,typeof(var)
dass es in freier Wildbahn häufig verwendet wird. Das macht genauso viel Sinn wievar a = 4 + (1)
.Sie können auch
==
(Gleichheitsvergleichsoperator) verwenden, da beide OperandenString
s sind (typeof
immer a zurückgibtString
). JavaScript ist so definiert, dass es dieselben Schritte ausführt, die ich verwendet habe===
(strikter Vergleichsoperator).Wie in Box9 erwähnt , wird dadurch keine Instanziierung erkannt
String
Objekt .Das erkennen Sie daran mit ....
jsFiddle .
...oder...
jsFiddle .
Aber das wird nicht in einer Multi arbeitet
window
Umgebung (Thinkiframe
s).Sie können dies umgehen mit ...
jsFiddle .
Aber auch hier (wie in Box9 erwähnt ) ist es besser, nur das Literalformat zu
String
verwenden, zvar str = 'I am a string';
.Weiterführende Literatur .
quelle
if(myVar.toUpperCase) alert('I am a string');
? Siehe: jsfiddle.net/tb3t4nsx{ toUpperCase: '' }
Die Kombination der vorherigen Antworten bietet folgende Lösungen:
oder
quelle
Der folgende Ausdruck gibt true zurück :
Der folgende Ausdruck gibt true zurück :
Der folgende Ausdruck gibt false zurück (sic!):
Der folgende Ausdruck gibt true zurück :
Bester und richtiger Weg ( imho ):
quelle
Heutzutage glaube ich, dass es bevorzugt ist, eine Funktionsform von typeof () zu verwenden, also ...
quelle
typeof
. Sie steuern lediglich die Reihenfolge der Operationen mit diesen Klammern. Einige Leute finden es unter bestimmten Umständen besser lesbar.filename
gruppieren die Klammern nur eine einzelne Anweisung und sind daher nutzlos und irrelevant. Es ist gut, dass diese Antwort eine Punktzahl von 0 hat, weil sie falsch, irreführend und nicht hilfreich ist. Es wäre besser, wenn es eine negative Punktzahl hätte.in allen Fällen auf null oder undefiniert prüfen a_string
quelle
typeof null
undtypeof undefined
wird nie zurückkehren'string'
, sotypeof a_string
ist genug. Entschuldigung für die NekropostierungMein persönlicher Ansatz, der in allen Fällen zu funktionieren scheint, besteht darin, die Anwesenheit von Mitgliedern zu testen, die alle nur für Zeichenfolgen anwesend sind.
Sehen: http://jsfiddle.net/x75uy0o6/
Ich würde gerne wissen, ob diese Methode Mängel aufweist, aber sie hat mir jahrelang gute Dienste geleistet.
quelle