Показать сообщение отдельно
  #1 (permalink)  
Старый 31.01.2012, 00:51
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Замыкание незамыкается...
var w = 4;
(function() {
	window.q = function q() {
		alert(w)
	}
})()
w = 3;
q()


почему выдает 3 а не 4!! ? потому что в скопе функции q лежит ссылка на window.w
меняя w мы меняем и то что выдаст функция.



хорошо, тогда так

(function() {
	//создаем обьект
	//кладем ссылку на него в локальную ww
	var ww = {
		a : 4
	}
	//кладем ссылку на него в window.ww
	window.ww = ww

	window.q = function q() {
		alert(ww.a)
	}
})()
window.ww = 3
q() // выдает 4 хотя значение мы уже поменяли!
Ответить с цитированием