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