2014-04-08 14 views
5

Jestem stoi dziwny konwersja w JavaScript:JavaScript konwertować int na string

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  

Jak mogę dostać 000000 lub "000000"?

+0

'000000' w numerycznych jest po prostu' 0' dla tłumacza, którego 'param' posiada 0. Zastosowanie ciąg cytatów wokół niego do„obejścia”to – KarelG

+0

@KarelG nie mogę zmienić metoda, co oznacza, że ​​nie mogę zmienić wyniku. –

Odpowiedz

1

Jeśli chcesz odróżnić 000000 od 0, nie możesz. 000000 jest "konwertowane" na 0 przed opuszczeniem funkcji.

Jeśli chcesz drukować zera, spróbuj coś takiego

function intToLeadingZerosString(myint){ 
    var s= myint.toString(10); 
    return Array(6-s.length+1).join("0") + s; 
} 
alert(intToLeadingZerosString(param)); 

czyli

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()); 
0

dlaczego nie można przekonwertować go na ciąg wracając go? ponieważ wartość wysłana przez zwrotna instrukcja zostanie zwrócona przez pojęcie "kopia według wartości". Przypisuje się go także do paramu, kopiując go (tj. Kopiuje według wartości). Tak więc, 000000 konwertuje do zaledwie 0. Następnie, konwersja do String będzie wynosić "0".

function getFromDatabase(){ 
     return '000000'; 
    } 

    var param = getFromDatabase();  
    alert(param);// -> 000000   
    alert(isNaN(param)?"":parseInt(param));// -> 0 

Powróć jako ciąg, a następnie przekonwertuj go na int, jeśli jest to wymagane. To będzie najlepszy sposób postępowania z twoim scenariuszem.

0

Ponieważ twoja funkcja zwraca wartość "int". Spróbuj zmienić na return '000000';

+0

Nie mogę zmienić metody, co oznacza, że ​​nie mogę zmienić wyniku. –