2010-07-15 7 views
2

Parce que l'utilisation de .toString() pour null vars ne fonctionne pas, et je ne peux pas vérifier chacun d'entre eux dans mon application particulière. Je sais que c'est un problème stupidement simple avec une réponse qui doit littéralement me regarder en face en ce moment.Javascript, String: Obtenir un var Javascript comme une chaîne

+0

"littéralement" - jeu de mots? – heisenberg

+0

que voulez-vous voir dans la chaîne si 'null' ou' undefined' a été passé, par exemple. – Anurag

Répondre

5

La route non-concaténation est d'utiliser la chaîne () constructeur:

var str = new String(myVar); // returns string object 
var str = String(myVar);  // returns string value 

Bien sûr, var str = "" + myVar; est plus courte et plus facile. Sachez que toutes les méthodes ici vont transformer une variable avec une valeur de null en "null". Si vous voulez vous déplacer, vous pouvez utiliser || pour définir un défaut lorsque la valeur d'une variable est « Falsey » comme nulle:

var str = myVar || ""; 

Juste aussi longtemps que vous savez que et faux serait aussi donner ici "" ici.

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String

2

Que diriez-vous

var str = '' + someVar; 
+0

Semble légèrement hackish ...? Meh, ça va marcher. – Hamster

+0

@Hamster Bien sûr, il est hackish, donc le coller dans une fonction pour le rendre plus propre. Ensuite, vous pouvez le rendre plus intelligent si vous vous retrouvez avec de nouveaux types de variables à traiter. –

+0

+1 - court et simple, fonctionne exactement comme 'String (myVar)', cependant, un edge-case peut être quand une valeur de formulaire est elle-même '' null ''. Ce sont le genre de bugs qui peuvent faire l'enfer de la vie 1 mois en bas de la ligne :) – Anurag

0

Que diriez-vous ...?

var theVarAsString = "" + oldVar;

1

Qu'en est-

var str = (variable || ""); 
//or 
(variable || "").toString(); 

Bien sûr, vous obtenez ce pour false, undefined et ainsi de suite, aussi, mais ce sera une chaîne vide et non "null"

1

String(null) renvoie "null", ce qui peut provoquer des problèmes si la valeur d'un champ de formulaire est elle-même null. Que diriez-vous d'une fonction de wrapper simple à la place?

function toString(v) { 
    if(v == null || v == undefined) { 
     return ""; 
    } 
    return String(v); 
} 

Seulement null, undefined et chaînes vides doivent retourner la chaîne vide. Toutes les autres valeurs falsifiées, y compris le nombre entier 0 retournera quelque chose d'autre. Certains tests,

> toString(null) 
"" 
> toString(undefined) 
"" 
> toString(false) 
"false" 
> toString(0) 
"0" 
> toString(NaN) 
"NaN" 
> toString("") 
""