Я не думаю, что есть что-то неправильное с использованием объекта контейнера. Тем не менее, я бы сделал привычку объявлять переменные, необходимые для связанного кода:
var replaceVars = {
num: null,
cal: null
};
Но, опять же, это также работает:
(function () {
var num, cal;
function x(){
num = 886;
}
function y(){
x();
cal = num * 99;
return cal;
}
})();