JavaScript将int转换为字符串
我在JavaScript中面临着奇怪的转换:JavaScript将int转换为字符串,javascript,string,int,type-conversion,Javascript,String,Int,Type Conversion,我在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
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或“000000”?如果你想区分000000和0,你不能。000000在离开函数之前被“转换”为0 如果要打印前导零,请尝试以下操作
function intToLeadingZerosString(myint){
var s= myint.toString(10);
return Array( 6-s.length+1 ).join("0") + s;
}
alert(intToLeadingZerosString(param));
或:
为什么不在返回时将其转换为字符串? 因为,return语句发送的值将通过“按值复制”的概念返回。此外,通过复制它(即按值复制)将其分配给param。因此,000000转换为0。之后,将其转换为字符串将为“0”
以字符串形式返回,然后根据需要将其转换为int。这将是处理场景的最佳方式。因为函数返回“int”值。
尝试在
上更改返回'000000'对于解释器来说,numerics中的code>000000
只是0
,而param
中的值为0。在其周围使用字符串引号“绕过”it@KarelG我不能改变方法,这意味着我不能改变结果。我不能改变方法,这意味着我不能改变结果。
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());
function getFromDatabase(){
return '000000';
}
var param = getFromDatabase();
alert(param);// -> 000000
alert(isNaN(param)?"":parseInt(param));// -> 0