Преглеждах видеоклип с меми в 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) за xtкоето не е string. Ако вече имате number вероятно, трябва да използвате Math.round() или Math.floor() или нещо друго, за да се справите с него по идеален начин, който отговаря на вашата цел.

Намерих това обяснение от вие-знаете-къде → The StackOverflow
Просто исках да го споделя, защото ми се стори доста интересно.

Благодаря, че прочетохте до края! Докато се срещнем отново!!











Повече съдържание в PlainEnglish.io. Регистрирайте се за нашия безплатен седмичен бюлетин. Присъединете се към нашата общност Discord и ни последвайте в Twitter, LinkedIn и YouTube.

Научете как да изградите осведоменост и приемане за вашия стартъп с Circuit.