2013-06-20 17 views
9

stworzyłem prosty skrypt aplikacje następująco:Dlaczego parseInt zwraca NAN dla ciągu "08" i zwraca 7 dla ciągu "07"?

function testeBug() { 
    Logger.log(parseInt("07")); 
    Logger.log(parseInt("08")); 
} 

A oto wyjście rejestratora:

[13-06-19 23: 09: 13: 130 BRT] 7,0 [13-06- 19 23: 09: 13: 130 BRT] NaN

Dlaczego tak się dzieje? Używam Google Apps Script

+1

możliwy duplikat [How come parseInt ("08") = 0, parseInt ("07") = 7] (http://stackoverflow.com/questions/12652305/how-come-parseint08-0-parseint07- 7) - ósemkowy w JavaScript - 8 nie jest poprawną cyfrą ósemkową. –

+0

Używam GOOGLE APPS SCRIPT, a nie Java Script –

+0

W tym samym rozwiązaniu zadziałało. –

Odpowiedz

17

Trzeba przejść przez parametr radix do parseInt

parseInt("08", 10); 

Niespełnienie tego powoduje pewne przeglądarek traktować ciągi z zerem jako podstawy-8, która jest, co widzisz, od 07 w base-8 jest 7, a 08 jest nieprawidłowy.

1

07 jest poprawną notacją ósemkową, 08 nie jest.

Powiązane problemy