Kanoniczny sposób analizy liczby dziesiętnej to parseInt(str, 10)
.
Jeśli chodzi o inne rozwiązania:
parseInt("-1")
: używają go tylko, jeśli chcesz żyć niebezpiecznie (niektóre przeglądarki zakładać "009"
jest dziesiętny, nie wszystkie)
Math.floor("-1")
: może to być podłoga i nie int , ale to nie jest właściwa droga, jeśli chcesz być pewien, że jest liczbą całkowitą
Number("-1")
: może chcesz obiektu, dzięki czemu można wywołać metody bez promocji i chcesz mieć pewność, że nie ma śmieci (Number('3 flowers')
==>NaN
)
- ,
~~"-1"
i inne kombinacje niejawnej konwersji i operacji binarnej: lubisz kod golfa i nie chcesz, aby twój kod był łatwy w utrzymaniu (dla tych, którzy zastanawiają się: operacja binarna przyjmuje całkowitą część liczby). Jak zauważył Blender w komentarzu, rozwiązania te nie są odpowiednie dla dużych liczb (dodatnich lub ujemnych).
Nie powinieneś używać innego rozwiązania niż parseInt(str,10)
, jeśli nie potrzebujesz, aby ciąg zawierał tylko int. To najszybsze rozwiązanie i, co ważniejsze, najbardziej czytelne. Jeśli silnik JS przeprowadza pewne optymalizacje, nie ma powodu, aby inne rozwiązania były szybsze niż ten.
Dodaj podstawę w parsent, aby mieć pewność, że uzyskasz to, co chcesz we wszystkich przeglądarkach. –
[jsperf - ciąg do liczby całkowitej] (http://jsperf.com/str2intbench) – Sirko
@Sirko To bardzo cenny link! Wygląda na to, że 'eval (" - 1 ")' jest najwolniejszym (zdecydowanie), a arytmetyczne * hacki * są najszybsze. Łał. Możesz łatwo zmienić to w interesującą odpowiedź. – emesx