Две функции parseInt() и Number() чаще всего используются для преобразования строки в тип данных, так в чем же их отличия?
Во-первых, давайте посмотрим на официальное определение:
parseInt() : функция parseInt() анализирует строковый аргумент и возвращает целое число по указанной системе счисления (основание в математических системах счисления). Второй параметр указывает, что система счисления, которую мы обычно используем, равна 10, а также может быть 8 или 16. Во избежание ошибок синтаксического анализа для строк, начинающихся с «0» и «0x», различные спецификации программирования JavaScript требуют, чтобы значение второй параметр должен быть указан явно, например, parseInt("123",10).
Еще один важный момент: parseInt анализирует строку от заголовка до целого числа и возвращает проанализированную целую часть при обнаружении символов, которые не могут быть проанализированы. Если первый символ не может быть проанализирован, он напрямую вернет NaN.
parseInt('16', 8) = 14 parseInt('10', 8) = 8 parseInt('16', 10) = 16 parseInt('10', 10) = 10 parseInt('16', 16) = 22 parseInt('10', 16) = 16
Number(): его можно использовать для преобразования типов без оператора new. Если его нельзя преобразовать в число, он вернет NaN, например «23aa».
Отличие: Следующие примеры могут ясно показать это.
// When the string is composed of numbers, they have no difference in the converted numbers. let numStr = '123' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //123 // When the string is composed of letters. let numStr = 'abc' console.log(parseInt(numStr)) //NaN console.log(Number(numStr)) //NaN // When the string is composed of numbers and letters. let numStr = '123a' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //NaN // When the string is composed of zeros and numbers. let numStr = '0123' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //123 // **When the string contains a decimal point.** let numStr = '123.456' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //123.456// ** When the number starts with 123aa. ** let numStr = '123abc' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //NaN // **When the string is null.** let numStr = null console.log(parseInt(numStr)) //NaN console.log(Number(numStr)) //0 // **When the string is ''(empty).** let numStr = '' console.log(parseInt(numStr)) //NaN console.log(Number(numStr)) //0
- Когда строка состоит из чисел, нет никакой разницы в преобразованных числах; если строка не содержит цифр и состоит только из букв, оба метода возвращают только результат NaN; когда строка состоит из нулей и цифр, все они анализируют все числа, кроме 0;
- Когда строка состоит из цифр и букв, ① если буква находится в начале, оба метода возвращают только результат NaN; ② если буква не находится в начале, метод Number возвращает NaN, а метод parseInt возвращает данные перед буквой.
- Перед операцией parseInt необходимо преобразовать значения, отличные от типа String, в тип String.
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.