> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/contributor/contributor-es/tiempo-de-ejecucion-de-la-escena/globals.md).

# Globales

El runtime de la escena garantiza la existencia de ciertos objetos y funciones dentro del entorno aislado de JavaScript, además de las utilidades estándar como `Promise`, `Date` o `Math`.

{% hint style="info" %}
Las variables globales descritas a continuación son conceptos típicos de JavaScript, pero están adaptadas al runtime de la escena de Decentraland y pueden no comportarse de forma idéntica a sus contrapartes en entornos de navegador o Node.
{% endhint %}

### Variables globales

El runtime inyecta 6 definiciones en el ámbito global de la escena:

1. [`console`](#console): una versión simplificada de la típica `console` objeto.
2. [`exports`](#module): un objeto donde la escena puede agregar su [interfaz pública](https://github.com/decentraland/docs/tree/main/contributor/execution.md).
3. [`module`](#module): un contenedor para el `exports` objeto.
4. [`require`](#module): una función para cargar módulos proporcionados por el runtime por nombre.
5. [`fetch`](#http): una implementación restringida de la `fetch` función.
6. [`WebSocket`](#http): una implementación restringida de la `WebSocket` clase.

Todas ellas se definen como propiedades de solo lectura, por lo que no se pueden reasignar. Algunas lanzarán excepciones al usarse a menos que ciertos [permisos](https://github.com/decentraland/docs/tree/main/contributor/contributor/content/entity-types/scenes.md#permissions) permisos

### Consola <a href="#console" id="console"></a>

Las escenas tienen acceso a un `console` objeto, muy similar al proporcionado por un entorno de navegador o Node, aunque limitado solo a algunos de los métodos que normalmente encontrarías.

```ts
type Console = {
  log(...args: any): void
  info(...args: any): void
  debug(...args: any): void
  warning(...args: any): void
  error(...args: any): void
}
```

Al igual que sus equivalentes estándar, cada método acepta argumentos variables de cualquier tipo y los presenta como mensajes legibles por humanos. Por ejemplo, esto es válido:

```js
console.log("The thing just appeared", { thing: "foo" }, [1, 2, 3])
```

El comportamiento preciso de estos métodos depende del proveedor, pero los mensajes deben ser accesibles para los desarrolladores de la escena que depuran su código.

{% hint style="info" %}
En el World Explorer basado en navegador de la Fundación, los mensajes de log aparecen en el panel de herramientas de desarrollo.
{% endhint %}

### Importaciones y exportaciones <a href="#module" id="module"></a>

Las escenas pueden importar y exportar objetos usando la tradicional [CommonJS](https://wiki.commonjs.org/wiki/Modules/1.0) interfaz de módulo.

```ts
exports: Object
require(moduleName: string): Object
```

El `require` función permite a las escenas acceder a módulos proporcionados por el runtime (como [EngineApi](https://github.com/decentraland/docs/tree/main/contributor/modules/engine_api.md) o [RestrictedActions](https://github.com/decentraland/docs/tree/main/contributor/modules/restricted_actions.md)), y nada más (no **lo hace** acceder a paquetes de NPM o módulos por ruta).

Las propiedades añadidas al `exports` objeto son la interfaz pública de la escena y se expondrán al runtime. De hecho, las escenas *deben* exponer al menos un método para funcionar correctamente (ver [ejecución](https://github.com/decentraland/docs/tree/main/contributor/execution.md)).

{% hint style="info" %}
Las escenas escritas en lenguajes como TypeScript usan la forma más moderna `import` y `export` sentencias, que pueden transpilarse a usos compatibles con CommonJS de `require` y `exports`.
{% endhint %}

### HTTP y WebSockets <a href="#http" id="http"></a>

El `fetch` y `WebSocket` variables globales funcionan exactamente igual que sus conocidas contrapartes (ver [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) y [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) en MDN), pero con algunas restricciones impuestas por el runtime.

Al llamar a la `fetch` función:

* Se lanza un error si la URL no comienza con `https://`.
* Se lanza un error si la escena no tiene la [`USE_FETCH` permiso](https://github.com/decentraland/docs/tree/main/contributor/contributor/content/entity-types/scenes.md#permissions).
* Un tiempo de espera definido por la implementación puede abortar la solicitud.

Al usar la `WebSocket` clase:

* Se lanza un error si la URL no comienza con `wss:`
* Se lanza un error si la escena no tiene la [`USE_WEBSOCKET` permiso](https://github.com/decentraland/docs/tree/main/contributor/contributor/content/entity-types/scenes.md#permissions).

Aparte de estas diferencias, ambos casos siguen el comportamiento estándar.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/contributor/contributor-es/tiempo-de-ejecucion-de-la-escena/globals.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
