## Notes
This is a list of terms/concepts that feel unfamiliar to me as I'm going through [JavaScript Execution Model - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Execution_model).
## List
- [[ECMAScript]]
- Host environment
- The browser
- NodeJS
- [[JavaScript Heap Memory]]
- See also: [Memory Management - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Memory_management)
- [[SharedArrayBuffer]]
- [[JavaScript Stack Memory]]
- Each JavaScript executor is an "agent", which looks like a [[Thread - JavaScript]]
- Each "agent" can own multiple [realms - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Execution_model#realms)
- Has a single memory model
- Little-endian or not
- Can be [synchronously blocked](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Execution_model#concurrency_and_ensuring_forward_progress) or not
- Atomic operations are [lock-free](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/isLockFree) or not
- Web agents include
- *Similar-origin window agent*: All have access to `Window`
- *Dedicated worker agent* with a single [DedicatedWorkerGlobalScope](https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope)
- *Shared worker agent* with a single [SharedWorkerGlobalScope](https://developer.mozilla.org/en-US/docs/Web/API/SharedWorkerGlobalScope)
- *Service worker agent* with a single [ServiceWorkerGlobalScope](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope)
- *Worklet agent* with a single [WorkletGlobalScope](https://developer.mozilla.org/en-US/docs/Web/API/WorkletGlobalScope)