开发者

Under what circumstances is it necessary to perform an explicit cast of a variable to a string in JavaScript?

Are there any scenarios where it is absolutely necessary to perform an explicit cast of a variable in JavaScript 开发者_开发知识库to a String

In the following example it is not necessary:

var n=1;
var s = "Hello" + n;  
var s = "Hello"+String(n); //not necessary

I've used a numeric value above, although this need not apply only to numerics.


Yes, if you want "11" instead of 2.

var n = 1;    
var s = n + n;

Will be s === 2


Well if your want to display two numbers side by side...

var a=5, b = 10;

alert( a+b ); // yields 15
alert( String(a) + String(b) ); //yields '510'

but i do not know if you would ever want to do something like this..


I would say it is necessary in this situation:

var n = 20; 
var m = 10;
var s = String(n) + String(m); // "2010" String


It depends on the type of object you are working with. The basic objects already have a useful toString method that turns them into strings. But custom objects don’t. They will inherit the method from Object.prototype.toString.

So whenever you have a custom object that should return a useful string when converted to string, define a toString method:

function Human(name) {
    this.name = name.toString();
    this.toString = function() {
        return this.name;
    };
    return this;
}
var alice = new Human("Alice");
alert("Hi, I’m " + alice + ".");


Usually a variable is converted to string when you want to use string methods on that variable. I think that the most useful case is when you must use a string method inside a function and you don't know what type of variable the user passes into the function. For example if you want to calculate the number of characters in a variable:

function length(s)
{
    return s.length;
}

With this function you can only work with strings because if the user inserts a number as argument the length property is undefined, because the Number object doesn't have that property, so you must cast the variable:

function length(s)
{
     s=s+"";
     return s.length;
}

and this time it works.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜