¿Cómo puedo verificar si un var es una cadena en JavaScript?
He intentado esto y no funciona ...
var a_string = "Hello, I'm a string.";
if (a_string typeof 'string') {
// this is a string
}
javascript
string
variable-types
vitto
fuente
fuente
Respuestas:
Estuviste cerca:
En una nota relacionada: la comprobación anterior no funcionará si se crea una cadena
new String('hello')
como el tipo será en suObject
lugar. Hay soluciones complicadas para evitar esto, pero es mejor evitar crear cadenas de esa manera, siempre.fuente
if(typeof(str) === typeof(String()))
El
typeof
operador no es un infijo (por lo que el LHS de su ejemplo no tiene sentido).Necesitas usarlo así ...
Recuerde,
typeof
es un operador, no una función. A pesar de esto, verás quetypeof(var)
se usa mucho en la naturaleza. Esto tiene tanto sentido comovar a = 4 + (1)
.Además, también puede usar
==
(operador de comparación de igualdad) ya que ambos operandos sonString
s (typeof
siempre devuelve aString
), JavaScript está definido para realizar los mismos pasos que yo había usado===
(operador de comparación estricto).Como menciona Box9 , esto no detectará un
String
objeto instanciado .Puedes detectar eso con ...
jsFiddle .
...o...
jsFiddle .
Pero esto no funcionará en un
window
entorno múltiple (pienseiframe
).Puedes evitar esto con ...
jsFiddle .
Pero de nuevo, (como menciona Box9 ), es mejor que solo use el
String
formato literal , por ejemplovar str = 'I am a string';
.Lectura adicional .
fuente
if(myVar.toUpperCase) alert('I am a string');
:? Ver: jsfiddle.net/tb3t4nsx{ toUpperCase: '' }
La combinación de las respuestas anteriores proporciona estas soluciones:
o
fuente
La siguiente expresión devuelve verdadero :
La siguiente expresión devuelve verdadero :
La siguiente expresión devuelve falso (sic!):
La siguiente expresión devuelve verdadero :
La mejor y correcta manera (en mi humilde opinión ):
fuente
Hoy en día creo que es preferible usar una forma de función typeof () así que ...
fuente
typeof
, solo estás controlando el orden de las operaciones con esos paréntesis. Algunas personas pueden encontrarlo más legible en ciertas circunstancias.filename
solo agrupan una sola declaración y, por lo tanto, son inútiles y extraños. Es bueno que esta respuesta tenga un puntaje de 0 porque es incorrecta, engañosa e inútil; Sería mejor si tuviera un puntaje negativo.verificar nulo o indefinido en todos los casos a_string
fuente
typeof null
ytypeof undefined
nunca volverá'string'
, así quetypeof a_string
es suficiente. Lo siento por necropostingMi enfoque personal, que parece funcionar para todos los casos, es probar la presencia de miembros que solo estarán presentes para las cadenas.
Ver: http://jsfiddle.net/x75uy0o6/
Me gustaría saber si este método tiene fallas, pero me ha servido durante años.
fuente