# Globais

O Azion Runtime oferece a toda function um conjunto de nomes globais que o código usa sem um import: built-ins do JavaScript, Web APIs, as APIs da Azion e alguns globais do Node.js. As listas desta página são os nomes que o runtime expõe após o deploy, agrupados pelo tipo que `typeof` retorna para cada um. `self` e `globalThis` são o mesmo objeto.

> **nota**
>
> Com `azion dev`, `caches`, `upgradeWebSocket`, `WebSocket` e `CustomEvent` não estão definidos, e `globalThis.dispatchEvent` não é uma função. `queueMicrotask` está definido localmente, mas não após o deploy. `EdgeRuntime` contém `"edge-runtime"`, e `Date.now()` avança durante uma requisição.

---

## Construtores e funções

Estes globais são funções, então `typeof` retorna `function` para cada um deles:

- Object
- Function
- Array
- Number
- parseFloat
- parseInt
- Boolean
- String
- Symbol
- Date
- Promise
- RegExp
- Error
- AggregateError
- EvalError
- RangeError
- ReferenceError
- SyntaxError
- TypeError
- URIError
- ArrayBuffer
- Uint8Array
- Int8Array
- Uint16Array
- Int16Array
- Uint32Array
- Int32Array
- Float32Array
- Float64Array
- Uint8ClampedArray
- BigUint64Array
- BigInt64Array
- DataView
- Map
- BigInt
- Set
- WeakMap
- WeakSet
- Proxy
- decodeURI
- decodeURIComponent
- encodeURI
- encodeURIComponent
- escape
- unescape
- isFinite
- isNaN
- Event
- EventTarget
- CustomEvent
- dispatchEvent
- addEventListener
- removeEventListener
- AbortSignal
- AbortController
- Blob
- Buffer: a classe `Buffer` do Node.js. Para mais informações, consulte [node:buffer](/pt-br/documentacao/devtools/runtime/node/buffer/).
- Cache e CacheStorage: as classes da [Cache API](/pt-br/documentacao/devtools/runtime/api-reference/cache/).
- Crypto
- CryptoKey
- CountQueuingStrategy
- DOMException
- FormData
- Headers
- ReadableStream
- ReadableStreamBYOBReader
- ReadableStreamDefaultReader
- Request
- Response
- SubtleCrypto
- TextDecoder
- TextEncoder
- TransformStream
- URL
- URLPattern
- URLSearchParams
- WritableStream
- WritableStreamDefaultWriter
- atob
- btoa
- clearTimeout
- fetch
- setTimeout
- setInterval
- setImmediate
- clearImmediate
- structuredClone
- ExtendableEvent
- FetchEvent
- FirewallEvent
- clearInterval
- SharedArrayBuffer
- CompressionStream
- DecompressionStream
- TextDecoderStream
- TextEncoderStream
- upgradeWebSocket e WebSocket: as funções da API [WebSocket](/pt-br/documentacao/devtools/runtime/api-reference/websocket/).

`globalThis` é um `EventTarget`, então os globais `addEventListener`, `removeEventListener` e `dispatchEvent` atuam sobre ele.

`ExtendableEvent`, `FetchEvent` e `FirewallEvent` estão definidos, mas uma function não pode construí-los: `new FetchEvent('fetch')` lança `TypeError: Illegal constructor.` O runtime cria o `FetchEvent` que um listener de `fetch` recebe de [addEventListener](/pt-br/documentacao/devtools/runtime/api-reference/add-eventlistener/).

---

## Objetos

Estes globais são objetos, então `typeof` retorna `object` para cada um deles:

- globalThis
- JSON
- Math
- Intl
- Reflect
- console
- crypto
- self
- Atomics
- WebAssembly
- performance
- caches: a instância de `CacheStorage` da [Cache API](/pt-br/documentacao/devtools/runtime/api-reference/cache/).
- process: o objeto `process` do Node.js. O `process.env` dele contém as variáveis de ambiente da conta. Para mais informações, consulte [node:process](/pt-br/documentacao/devtools/runtime/node/process/).
- Azion: o namespace das APIs da Azion, que acessam [variáveis de ambiente](/pt-br/documentacao/devtools/runtime/api-reference/environment-variables/), [network lists](/pt-br/documentacao/devtools/runtime/api-reference/network-list/), [Object Storage](/pt-br/documentacao/devtools/runtime/api-reference/storage/), [SQL Database](/pt-br/documentacao/devtools/runtime/api-reference/sql-database/), [KV Store](/pt-br/documentacao/devtools/runtime/api-reference/kv-store/) e [AI Inference](/pt-br/documentacao/devtools/runtime/api-reference/ai/).

---

## Valores numéricos

Estes globais são números:

- Infinity
- NaN

---

## Outros valores

| Global        | Tipo        | Valor       |
| ------------- | ----------- | ----------- |
| `undefined`   | `undefined` | `undefined` |
| `EdgeRuntime` | String      | `"azion"`   |

---

## Tempo dentro de uma requisição

Em uma function com deploy feito, `Date.now()` retorna o mesmo valor durante toda a requisição. Ele não avança ao longo de um loop, de um timer ou de uma chamada `fetch()`, e seus milissegundos são `0`. Para medir o tempo decorrido dentro de uma requisição, use `performance.now()`: ele avança durante a requisição e começa em `0`.

---

## Recursos relacionados

- [Web APIs](/pt-br/documentacao/devtools/runtime/api-reference/javascript.md): As páginas de referência das Web APIs que esses globais expõem.
- [Web standards](/pt-br/documentacao/devtools/runtime/api-reference/web-standards.md): Os padrões que o Azion Runtime implementa e o que ele recusa.
- [APIs do Node.js](/pt-br/documentacao/devtools/runtime/node.md): Os módulos do Node.js que uma function importa, além dos globais `Buffer` e `process`.
- [Como o Azion Runtime funciona](/pt-br/documentacao/devtools/runtime/como-funciona.md): Como o runtime com deploy feito difere de `azion dev` na sua máquina.
