Во-первых, ты передал не объект, а null. Ну а во вторых, если бы даже передал объект, то
	
	| 
		
			Сообщение от Zoltan
			
		
	 | 
	| 
		function f(n)
	 | 
	
Вот тут n ссылается на тот же объект, что и N.
	
	| 
		
			Сообщение от Zoltan
			
		
	 | 
	| 
		n = new Object();
	 | 
	
Теперь n ссылается на новый объект. А N ссылается на старый. Если ты и в N присвоишь что-нибудь другое, то на старый объект никто ссылаться не будет. Но он будет сидеть в памяти еще некоторое время. Пока сборщик не удалит.
Присваивая новое значение в переменную, ты его не записываешь в связанную с переменной память, ты создаешь новую область памяти и записываешь значение туда. А старая область остается нетронутой.
Речь конечно об объектах.