我在JavaScript中面临奇怪的转换:
function getFromDatabase(){
//the result may be gotten from database or some complex methods and CANT be changed!
return 000000;
}
var param = getFromDatabase();
alert(param);// -> 0
alert(param.toString());// -> 0
alert("" +param + "");// -> 0
如何获得000000或n#34; 000000" ?
答案 0 :(得分:1)
如果要将000000与0区分开来,则不能。在离开函数之前,000000被“转换”为0。
如果要打印前导零,请尝试类似
的内容function intToLeadingZerosString(myint){
var s= myint.toString(10);
return Array( 6-s.length+1 ).join("0") + s;
}
alert(intToLeadingZerosString(param));
或者:
Number.prototype.toStringLeading = function() {
var s = this.toString(10);
return Array( (arguments.length?arguments[0]:6)-s.length+1 ).join("0") + s;
};
alert(param.toStringLeading(6));
alert(param.toStringLeading());
答案 1 :(得分:0)
为什么不在返回时将其转换为字符串? 因为,return语句发送的值将通过" copy by value"的概念返回。它也通过复制它(即按值复制)分配给param。因此,000000转换为0.之后,将其转换为String将是" 0"。
function getFromDatabase(){
return '000000';
}
var param = getFromDatabase();
alert(param);// -> 000000
alert(isNaN(param)?"":parseInt(param));// -> 0
以字符串形式返回,然后根据需要将其转换为int。这将是处理场景的最佳方式。
答案 2 :(得分:0)
因为你的函数返回'int'值。
尝试更改return '000000';