Замыкания в javascript, почему не работает?
1. Замыкание тут не причем.
2. Ты передаешь примитив. Он передается по значению. Если передать объект, он передастся по ссылке и изменитсяy={n:2};
(function(o) {o.n=5}) (y);
console.log(y); // y == { n:5}
Рабочий вариант - var a = 1;
	function d(c){
		console.log(c);
		return c = 2;		
	}
a = d(a);

console.log(a);
Ответ на вопрос: Потому что вы вызываете функцию с параметром, равным a. Это не влияет на значение самой переменной 