Здесь описано, как генерировать пользовательские ошибки. Я бы предложил принять String
как value
для идентификатора пользователя. Когда синтаксический анализ value
не удался, вы можете выдать свою пользовательскую ошибку.
Они используют в своих интересах закрытия.
Короткое объяснение: Так как JS использует обзор функционального уровня, можно сделать набор действий в функции и иметь его, остаются в том объеме. Это полезно для вызова кода, который не смешивает с глобальным пространством имен. Это также позволяет делать частные переменные - если Вы объявляете переменную в анонимной функции и сразу выполняете ее, только другой код в анонимной функции может получить доступ к той переменной.
Например, предположите, что я хочу сделать глобальный генератор уникального идентификатора. Можно было бы сделать код как это:
var counter = 0;
var genId = function()
{
counter = counter + 1;
return counter;
}
Однако теперь любой может смешать со счетчиком, и я теперь загрязнил глобальное пространство имен двумя переменными (счетчик и genId).
Вместо этого я мог использовать анонимную функцию для генерации моей встречной функции:
var genId = function()
{
var counter = 0;
var genIdImpl = function()
{
counter = counter + 1;
return counter;
}
return genIdImpl;
}();
Теперь, у меня только есть одна переменная в глобальном пространстве имен, которое выгодно. Что еще более важно, переменная счетчика теперь безопасна от того, чтобы быть измененным - она только существует в объеме анонимной функции и поэтому только функции genIdImpl (который был определен в том же объеме), может получить доступ к нему.
Это похоже в примере кода YUI, они просто хотят выполнить код, который не загрязняет глобальное пространство имен вообще.
Они хотят избежать конфликтов пространства имен, я предположил бы. Кажется как хорошая практика в JS.