【发布时间】:2010-02-12 13:51:51
【问题描述】:
是否存在绝对需要将 JavaScript 中的变量显式转换为字符串的情况
在下面的例子中没有必要:
var n=1;
var s = "Hello" + n;
var s = "Hello"+String(n); //not necessary
我在上面使用了一个数值,尽管这不仅仅适用于数字。
【问题讨论】:
标签: javascript string casting
是否存在绝对需要将 JavaScript 中的变量显式转换为字符串的情况
在下面的例子中没有必要:
var n=1;
var s = "Hello" + n;
var s = "Hello"+String(n); //not necessary
我在上面使用了一个数值,尽管这不仅仅适用于数字。
【问题讨论】:
标签: javascript string casting
是的,如果你想要“11”而不是 2。
var n = 1;
var s = n + n;
将是s === 2
【讨论】:
如果你想并排显示两个数字...
var a=5, b = 10;
alert( a+b ); // yields 15
alert( String(a) + String(b) ); //yields '510'
但我不知道你是否愿意做这样的事情..
【讨论】:
alert(a + "" + b)
我会说在这种情况下是必要的:
var n = 20;
var m = 10;
var s = String(n) + String(m); // "2010" String
【讨论】:
这取决于您使用的对象类型。基本对象已经有一个有用的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 + ".");
【讨论】:
当您想对变量使用字符串方法时,通常会将变量转换为字符串。我认为最有用的情况是当您必须在函数中使用字符串方法并且您不知道用户传递给函数的变量类型时。例如,如果要计算变量中的字符数:
function length(s)
{
return s.length;
}
使用这个函数你只能处理字符串,因为如果用户插入一个数字作为参数,长度属性是未定义的,因为数字对象没有那个属性,所以你必须转换变量:
function length(s)
{
s=s+"";
return s.length;
}
这次成功了。
【讨论】: