Вот 
здесь я увидел пример:
function func() {
	var funcObj = arguments.callee
	funcObj.test++
	alert(funcObj.test)
}
func.test = 1
func()
func()
Ниже было примечание, что
	
	| 
		 Код: 
	 | 
	В примере нельзя было сделать присвоение:
var test = arguments.callee.test
test++
так как при этом операция ++ сработала бы на локальной переменной test, а не на свойстве test объекта функции.  | 
	
Почему так происходит? У меня есть предположение, что в JavaScript есть некий механизм передачи переменных по ссылке и по значению.
Возникли следующие вопросы:
1) Есть ли в JavaScript что-то похожее на передачу по ссылке?
2) Как можно понять, что записав var myvar=some.var, будет ли в var  ссылка на объект или же создаётся новая локальная переменная? Если я сделаю myvar++, то я сделаю эту операцию на локальной переменной или же на объекте, на который ссылается эта переменная.