在什么情况下需要在JavaScript中对字符串执行变量的显式转换?

时间:2010-02-12 13:51:51

标签: javascript string casting

是否存在绝对有必要在JavaScript中将变量显式转换为String

的情况

在以下示例中,没有必要:

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

我上面使用了一个数值,虽然这不仅仅适用于数字。

5 个答案:

答案 0 :(得分:5)

是的,如果你想要“11”而不是2。

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

将是s === 2

答案 1 :(得分:2)

好吧,如果你想并排显示两个数字......

var a=5, b = 10;

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

但我不知道你是否愿意做这样的事情......

答案 2 :(得分:1)

我想说在这种情况下有必要:

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

答案 3 :(得分:1)

这取决于您正在使用的对象的类型。基本对象已经有了一个有用的toString方法,可以将它们转换为字符串。但是自定义对象没有。他们将从Object.prototype.toString继承该方法。

因此,每当你有一个自定义对象在转换为字符串时应该返回一个有用的字符串时,定义一个toString方法:

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 + ".");

答案 4 :(得分:1)

当您想在该变量上使用字符串方法时,通常会将变量转换为字符串。我认为最有用的情况是你必须在函数内使用字符串方法,而你不知道用户传递给函数的变量类型。例如,如果要计算变量中的字符数:

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

使用此函数,您只能使用字符串,因为如果用户插入数字作为参数,则length属性未定义,因为Number对象没有该属性,因此您必须强制转换变量:

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

这次它有效。