№2
Приватные переменные через немедленно вызываемую функцию
var getUserUrl = function() {
var UserId = 666; // Переменная доступна только в теле функции
return function() {
console.log(UserId); // Удачно выведет айдищник пользователя
return 'http://domain.com/u'+UserId;
}
}() // Функция будет вызывана сразу после определения, и вернет в переменную новую функцию.
getUserId();
// вернет http://domain.com/u666
// при этом мы не сможем изменить переменную UserId, из вне, так как она является локальной (приватной) переменной.