## 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)