Глобальный объект window существует весь рантайм от запуска программы до ее завершения.
Есть ещё лучше ресурс называется codepen
А уж как именно движок понимает, что произошел захват, я вам не подскажу. По программисту обычно как бы очевидно, что захвачено, а что - нет.
с глобальным контекстом связана любая функция, для этого не требуется замыкание.
function f() {
let x = 0, y = 0;
return () => {
debugger;
return 0;
};
}
let ff = f();
ff();
ссылается на какую-либо переменную в нём внутренняя функция или нет - дело десятое и к замыканию отношения не имеет.
function f() {
let x = 0, y = 0;
return () => {
debugger;
return x;
};
}
let ff = f();
ff();
import { makeObservable, observable, action } from 'mobx'
import React from 'react'
import { observer } from 'mobx-react-lite'
class Store {
constructor() {
makeObservable(this)
}
@observable value1 = 1
@observable value2 = 1
@action inc1 = (): void => {
this.value1 += 1
}
@action inc2 = (): void => {
this.value2 += 1
}
@action incAll = (): void => {
this.inc1()
this.inc2()
}
}
const store = new Store()
export const App: React.FC = observer(() => {
const handler = (): void => {
setTimeout(() => {
store.inc1()
store.inc2()
//store.incAll()
}, 10)
}
console.log('render', store.value1, store.value2)
return (
<button type="button" onClick={handler}>
{store.value1}, {store.value2}
</button>
)
})
без уточнения подробностей вопрос не имеет смысла.
третий мог победить второго только потому, потому что у третьего есть бонус атаки против второго.
например, в тройке "камень-ножницы-бумага" кто самый сильный?