Reputation: 6822
I'm facing strange convertion in 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
How can I get 000000 or "000000" ?
Upvotes: 5
Views: 8217
Reputation: 1500
If you want to differentiate 000000 from 0, you can't. 000000 is "converted" to 0 before leaving the function.
If you want to print leading zeros, try something like
function intToLeadingZerosString(myint){
var s= myint.toString(10);
return Array( 6-s.length+1 ).join("0") + s;
}
alert(intToLeadingZerosString(param));
Or:
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());
Upvotes: 1
Reputation:
Because your function returns 'int' value.
Try to change on return '000000';
Upvotes: 0
Reputation: 1600
why don't you convert it to string while returning it? because, value sent by return statement is will be returned by concept of "copy by value". Also it is assigned to param by copying it (i.e. copy by value). So, 000000 converts to just 0. After that, converting it to String will be "0".
function getFromDatabase(){
return '000000';
}
var param = getFromDatabase();
alert(param);// -> 000000
alert(isNaN(param)?"":parseInt(param));// -> 0
Return as string and later convert it to int if required. This will be the best way of handling your scenario.
Upvotes: 0