Преглеждах видеоклип с меми в YouTube, който имаше този странен резултат от функцията parseInt. Така че трябваше да го разгледам и причината беше доста проста, ако знаете как работи тази функция. Нека се захванем направо!
Ако не сте знаели тази функция преди, въз основа на ECMAScript стандарт:
Функцията
parseInt
произвежда интегралNumber
, продиктуван от интерпретация на съдържанието на аргументаstring
според посочената основа.
Просто казано, той преобразува низ в цяло число въз основа на някои правила. Нищо страшно, или не е така?
Едно от тези правила гласи, че ако входът на функцията parseInt не е низ, тогава тя го преобразува в низ като първа стъпка.
И след това го преобразува в цяло число за резултата. Интересното тук е, когато числото се преобразува в низ:
String(0.5); => '0.5' String(0.05); => '0.05' String(0.005); => '0.005' String(0.0005); => '0.0005' String(0.00005); => '0.00005' String(0.000005); => '0.000005'
Но когато е шест, 0 преди "5"
String(0.0000005); becomes “5e-7”
Така че, това означава, че когато използваме parseInt(0.0000005)
, това е същото като използването на parseInt('5e-7')
и се основава на дефиницията:
parseInt може да интерпретира само водеща част от низ като цяло число, игнорира всички кодови единици, които не могат да бъдат интерпретирани като част от нотацията на цяло число, и не е дадена индикация, че такива кодови единици са били игнорирани.
Така че отговорът ще върне само 5
, защото това е единственият знак, който е число до e
, което не е число, така че останалата част от него e-7
ще бъде отхвърлена.
Не забравяйте, че не се препоръчва да използвате parseInt(x)
за x
tкоето не е string
. Ако вече имате number
вероятно, трябва да използвате Math.round()
или Math.floor()
или нещо друго, за да се справите с него по идеален начин, който отговаря на вашата цел.
Намерих това обяснение от вие-знаете-къде → The StackOverflow
Просто исках да го споделя, защото ми се стори доста интересно.
Благодаря, че прочетохте до края! Докато се срещнем отново!!
Повече съдържание в PlainEnglish.io. Регистрирайте се за нашия безплатен седмичен бюлетин. Присъединете се към нашата общност Discord и ни последвайте в Twitter, LinkedIn и YouTube.
Научете как да изградите осведоменост и приемане за вашия стартъп с Circuit.