@Boris007

Почему window хранит в себе переменные, но не делает их ссылками внутри себя?

window у нас корень всей страницы
По нему мы можем обратиться к q
Т.е. window у нас объект со свойством q

Почему тогда q в контексте window не меняет свое значение?
let q = 0

function foo(x) {
  this.x++
}

console.log(window.q)

console.log(q)

function go(cb) {
  cb()
}

go(foo.bind(window, q))

console.log(q)
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Во-первых, у let блочная область видимости:
>> let a = 0;
<- undefined
>> window.a
<- undefined

Во-вторых:
function foo(x) {
  this.x++
}

Вот в этой функции, локальная переменная x и свойство x объекта this - это разные вещи.

Если хочется иметь функцию, которая будет менять определенное или произвольное свойство объекта window или произвольного объекта - то делать надо это явно и прямо. Например:
window.x = 0
window.x++

Или же:
let propName = 'a'
window[propName] = 0
window[propName]++
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы