

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 支持的运行时系统功能
<a name="supported-features"></a>

以下几节介绍了支持的 APPSYNC\$1JS 运行时系统功能集。

## 核心功能
<a name="core-features"></a>

支持以下核心功能。

------
#### [ Types ]

支持以下类型：
+ 数字
+ 字符串
+ 布尔值
+ 对象
+ 数组
+ 函数

------
#### [ Operators ]

支持的运算符，其中包括：
+ 标准数学运算符（`+`、`-`、`/`、`%`、`*` 等）
+ Null 合并运算符 (`??`)
+ 可选链 (`?.`)
+ 按位运算符
+ `void` 和 `typeof` 运算符
+ 展开运算符（`...`）

不支持以下运算符：
+ 一元运算符（`++`、`--` 和 `~`）
+ `in` 运算符
**注意**  
可以使用 `Object.hasOwn` 运算符检查指定的属性是否位于指定的对象中。

------
#### [ Statements ]

支持以下语句：
+ `const`
+ `let`
+ `var`
+ `break`
+ `else`
+ `for-in`
+ `for-of` 
+ `if`
+ `return`
+ `switch`
+ spread syntax

不支持以下语句：
+ `catch`
+ `continue`
+ `do-while`
+ `finally`
+ `for(initialization; condition; afterthought)`
**注意**  
例外情况是 `for-in` 和 `for-of` 表达式，支持这些表达式。
+ `throw`
+ `try`
+ `while`
+ 带标签的语句

------
#### [ Literals ]

支持以下 ES 6 [模板文本](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)：
+ 多行字符串
+ 表达式插值
+ 嵌套模板

------
#### [ Functions ]

支持以下函数语法：
+ 支持函数声明。
+ 支持 ES 6 箭头函数。
+ 支持 ES 6 剩余参数语法。

------
#### [ Strict mode ]

默认情况下，函数在严格模式下运行，因此您无需在函数代码中添加 `use_strict` 语句。无法对其进行更改。

------

## 原语对象
<a name="primitive-objects"></a>

支持以下 ES 基元对象及其函数。

------
#### [ Object ]

支持以下对象：
+ `Object.assign()`
+ `Object.entries()` 
+ `Object.hasOwn()`
+ `Object.keys()` 
+ `Object.values()`
+ `delete` 

------
#### [ String ]

支持以下字符串：
+  `String.prototype.length()` 
+  `String.prototype.charAt()` 
+  `String.prototype.concat()` 
+  `String.prototype.endsWith()` 
+  `String.prototype.indexOf()` 
+  `String.prototype.lastIndexOf()` 
+  `String.raw()` 
+  `String.prototype.replace()`
**注意**  
不支持正则表达式。  
但是，提供的参数支持 Java 正则表达式结构。有关更多信息，请参阅[模式](https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html)。
+ `String.prototype.replaceAll()`
**注意**  
不支持正则表达式。  
但是，提供的参数支持 Java 正则表达式结构。有关更多信息，请参阅[模式](https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html)。
+  `String.prototype.slice()` 
+  `String.prototype.split()` 
+  `String.prototype.startsWith()` 
+  `String.prototype.toLowerCase()` 
+  `String.prototype.toUpperCase()` 
+  `String.prototype.trim()` 
+  `String.prototype.trimEnd()` 
+  `String.prototype.trimStart()` 

------
#### [ Number ]

支持以下数字：
+  `Number.isFinite` 
+  `Number.isNaN` 

------

## 内置对象和函数
<a name="built-in-objects-functions"></a>

支持以下函数和对象。

------
#### [ Math ]

支持以下数学函数：
+  `Math.random()` 
+  `Math.min()` 
+  `Math.max()` 
+  `Math.round()` 
+  `Math.floor()` 
+  `Math.ceil()` 

------
#### [ Array ]

支持以下数组方法：
+ `Array.prototype.length` 
+ `Array.prototype.concat()` 
+ `Array.prototype.fill()` 
+ `Array.prototype.flat()` 
+ `Array.prototype.indexOf()` 
+ `Array.prototype.join()` 
+ `Array.prototype.lastIndexOf()` 
+ `Array.prototype.pop()` 
+ `Array.prototype.push()` 
+ `Array.prototype.reverse()` 
+ `Array.prototype.shift()` 
+ `Array.prototype.slice()` 
+ `Array.prototype.sort()`
**注意**  
`Array.prototype.sort()` 不支持参数。
+ `Array.prototype.splice()` 
+ `Array.prototype.unshift()`
+ `Array.prototype.forEach()`
+ `Array.prototype.map()`
+ `Array.prototype.flatMap()`
+ `Array.prototype.filter()`
+ `Array.prototype.reduce()`
+ `Array.prototype.reduceRight()`
+ `Array.prototype.find()`
+ `Array.prototype.some()`
+ `Array.prototype.every()`
+ `Array.prototype.findIndex()`
+ `Array.prototype.findLast()`
+ `Array.prototype.findLastIndex()`
+ `delete` 

------
#### [ Console ]

可以使用控制台对象进行调试。在实时查询执行期间，控制台 log/error 语句会发送到 Amazon CloudWatch Logs（如果启用了日志记录）。在使用 `evaluateCode` 评估代码期间，将在命令响应中返回日志语句。
+ `console.error()`
+ `console.log()`

------
#### [ Function ]
+ 不支持 `apply`、`bind` 和 `call` 方法。
+ 不支持函数构造函数。
+ 不支持将函数作为参数传递。
+ 不支持递归函数调用。

------
#### [ JSON ]

支持以下 JSON 方法：
+ `JSON.parse()`
**注意**  
如果解析的字符串不是有效的 JSON，则返回空字符串。
+ `JSON.stringify()`

------
#### [ Promises ]

不支持异步过程，也不支持 Promise。

**注意**  
中不支持在`APPSYNC_JS`运行时内访问网络和文件系统 AWS AppSync。 AWS AppSync 根据 AWS AppSync 解析器或 AWS AppSync 函数发出的请求处理所有 I/O 操作。

------

## 全局变量
<a name="globals"></a>

支持以下全局常数：
+  `NaN` 
+  `Infinity` 
+  `undefined`
+ [https://docs.aws.amazon.com/appsync/latest/devguide/built-in-util-js.html](https://docs.aws.amazon.com/appsync/latest/devguide/built-in-util-js.html)
+ [https://docs.aws.amazon.com/appsync/latest/devguide/extensions-js.html](https://docs.aws.amazon.com/appsync/latest/devguide/extensions-js.html)
+ `runtime`

## 错误类型
<a name="error-types"></a>

不支持使用 `throw` 引发错误。您可以使用 `util.error()` 函数返回错误。您可以使用 `util.appendError` 函数在 GraphQL 响应中包含错误。

有关更多信息，请参阅[错误实用程序](https://docs.aws.amazon.com/appsync/latest/devguide/built-in-util-js.html#utility-helpers-in-error-js)。