Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замыкание незамыкается... (https://javascript.ru/forum/misc/25270-zamykanie-nezamykaetsya.html)

Livaanderiamarum 31.01.2012 00:51

Замыкание незамыкается...
 
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 хотя значение мы уже поменяли!

Aetae 31.01.2012 01:22

Не тупи, ссылку на обобьет ты затёр тройкой.
Надо:
window.ww.a = 3

Livaanderiamarum 31.01.2012 02:58

млять я думал я .a написал) спасибо) а то я уже всю консоль хрома излазил вдоль и поперек

Livaanderiamarum 31.01.2012 03:00

если бы у нас было alert(window.ww.a) а я затер так window.ww = 3
тогда бы сработало)) точно..

это и называется маленький вонючий жужащий баг из-за невнимательности

poorking 31.01.2012 14:28

удалил


Часовой пояс GMT +3, время: 21:44.