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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я бы пошел с вашим решением - оберните его в функцию с подходящим названием, сохраните его поведение / соглашение о вызовах в соответствии с библиотечной функцией и используйте функцию-оболочку.
В зависимости от количества параметров вы можете захотеть использовать Ввести объект параметра вместе с вашей вспомогательной функцией. Затем вы можете установить значения по умолчанию для вашего объекта параметра и установить только те свойства, которые меняются при использовании функции.
Мы используем много функций, которые применяют значение по умолчанию, если переданное значение равно нулю.
// base defaults to 10
function ParseInteger(str,base)
{
if (base==null)
base=10;
return parseInt(str,base);
}
немного сбивает с толку то, что в javascript есть undefined и null - один означает I don't exist (значение не было установлено), другой - что-то вроде I exist, but don't;) (значение было установлено, но это «ничего»)
Однако вы также можете явно передать 'null', чтобы обозначить 'дать мне значение по умолчанию', особенно если (а) функция-оболочка, которая также имеет аргументы по умолчанию, вызывает ее, или (б) вы добавляете дополнительные аргументы впоследствии. Выше приведена общая идиома JavaScript для аргументов по умолчанию.
Вы можете проверить, сколько аргументов было передано, используя 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"
проверьте
arguments.length < 2,typeof base === 'undefined'илиtypeof base !== 'number'-base == null- неправильный тест, но работает (для некоторого значения 'работает') из-за неявного преобразования типа