Как лучше всего передавать необязательные аргументы функции, которые почти всегда одинаковы

Как лучше всего передать необязательный аргумент, который почти всегда один и тот же? Речь идет о функции parseInt в Javascript; второй аргумент для системы счисления является необязательным, но чтобы строка, начинающаяся с нуля, не рассматривалась как восьмеричная, общепризнанной хорошей практикой всегда указывать 10 в качестве второго аргумента. Достаточно справедливо, поэтому мне интересно, как лучше всего справиться с этой ситуацией; в частности, следует ли мне создать удобную функцию, такую ​​как parseBaseTenInt (str), которая просто возвращает parseInt (str, 10)? Я унаследовал один файл кода с примерно 10 вызовами parseInt без второго аргумента, и создание вспомогательной функции впоследствии позволит мне выполнить простую замену parseInt на parseBaseTenInt. Однако я могу представить себе недостатки функции удобства, особенно, что она не используется другими разработчиками. Поскольку сейчас это всего лишь 1 файл, и я буду основным разработчиком, продвигающимся вперед, было бы не слишком неудобно просто добавить второй аргумент ко всем вызовам функции parseInt.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
1 843
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Я бы пошел с вашим решением - оберните его в функцию с подходящим названием, сохраните его поведение / соглашение о вызовах в соответствии с библиотечной функцией и используйте функцию-оболочку.

В зависимости от количества параметров вы можете захотеть использовать Ввести объект параметра вместе с вашей вспомогательной функцией. Затем вы можете установить значения по умолчанию для вашего объекта параметра и установить только те свойства, которые меняются при использовании функции.

Мы используем много функций, которые применяют значение по умолчанию, если переданное значение равно нулю.

// base defaults to 10
function ParseInteger(str,base)
{
    if (base==null)
        base=10;
    return parseInt(str,base);
}

проверьте arguments.length < 2, typeof base === 'undefined' или typeof base !== 'number' - base == null - неправильный тест, но работает (для некоторого значения 'работает') из-за неявного преобразования типа

Christoph 20.01.2009 17:11

немного сбивает с толку то, что в javascript есть undefined и null - один означает I don't exist (значение не было установлено), другой - что-то вроде I exist, but don't;) (значение было установлено, но это «ничего»)

Christoph 20.01.2009 18:28

Однако вы также можете явно передать 'null', чтобы обозначить 'дать мне значение по умолчанию', особенно если (а) функция-оболочка, которая также имеет аргументы по умолчанию, вызывает ее, или (б) вы добавляете дополнительные аргументы впоследствии. Выше приведена общая идиома JavaScript для аргументов по умолчанию.

bobince 21.01.2009 02:40

Вы можете проверить, сколько аргументов было передано, используя arguments.length внутри функции. Или вы устанавливаете значения по умолчанию для каждой переменной с помощью оператора ||:

function foo(bar, baz) {
    bar = bar || "default";
    baz = baz || 0;
    return bar + ", " + baz;
}
foo();                 // "default, 0"
foo("some string");    // "some string, 0"
foo("some string", 1); // "some string, 1"

Другие вопросы по теме