tags:

views:

95

answers:

5

I have a function, say:

setValue: function(myValue) {
  ...
}

The caller might pass a string, number, boolean, or object. I need to ensure that the value passed further down the line is a string. What is the safest way of doing this? I realize there are many ways some types (e.g. Date) could be converted to strings, but I am just looking for something reasonable out of the box.

I could write a series of typeof statements:

if (typeof myValue == "boolean") {}
else if () {}
...

But that can be error-prone as types can be missed.

Firefox seems to support writing things like:

var foo = 10; foo.toString()

But is this going to work with all web browsers? I need to support IE 6 and up.

In short, what is the shortest way of doing the conversion while covering every single type?

-Erik

+8  A: 
var stringValue = String(foo);

or even shorter

var stringValue = "" + foo;
Darin Dimitrov
+3  A: 
value += '';
Fabien Ménager
A: 

what about forcing string context, e.g. ""+foo?

Andrey
+2  A: 

If you use myValue as a string, Javascript will implicity convert it to a string. If you need to hint to the Javascript engine that you're dealing with a string (for example, to use the + operator), you can safely use toString in IE6 and up.

patjak
A: 

Yet another way is this:

var stringValue = (value).toString();
Helgi