# 脚本

这是一个执行 JavaScript 语法脚本并返回结果的任务。

## 参数

- 脚本
  - 以 JavaScript 语法编写。
  - 全局对象是一个简单的对象，包含来自相应[场景上下文](../concept/scenario-context.md)的数据和变量。换句话说，在脚本内部，您可以使用来自场景的[脚本内置变量](../concept/script-internal-variables.md)（例如 data、variables、domain、user 和 lng 变量）而无需任何特殊修饰符，或者通过`this`访问器。
  - 任务的执行结果通过`return`语法返回。
  - 由于脚本内的全局对象仅限于数据和变量以及其他[脚本内置变量](../concept/script-internal-variables.md)，请将其视为一个沙盒环境，在该环境中大多数与系统相关的功能不可用。建议实现简单的操作。
    - [Node Sandbox](https://medium.com/@devnullnor/a-secure-node-sandbox-f23b9fc9f2b0)
    - [vm2](https://github.com/patriksimek/vm2/blob/master/README.md)

## 示例脚本

```
return data['step1'].map(record => {
  return {
    ...record,
    id: 'PREFIX-' + record.id
  }
})
```

```
return Math.floor(Number(this.data['step2']))
```

```
return this.data['step3'].map(record => {
  return {
    ...record,
    id: (this.variables.prefix || 'DEFAULT-') + record.id
  }
})
```
